トップページ⇒php
1001コメント315KB

【PHP】下らねぇ質問はここに書き込みやがれpart14

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/12/18(日) 10:10:12ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
過去スレは>>2
0551nobodyさん2006/01/01(日) 08:02:55ID:???
winXP PHP5.0.5(cli)
>>548見て何となくsubstr試したら、気になる結果が出たので質問

<?php
$str = "abc\0def";
echo substr($str, 5)."\n"; # ef
echo substr($str, 1)."\n"; # bc def
?>

表示出来ない文字列(null含む)は、空白文字として表示されるでおk?
0552nobodyさん2006/01/01(日) 08:24:16ID:???
>>551
substrと関係ないどころかPHPとすら関係ない環境依存。
0553nobodyさん2006/01/01(日) 08:25:39ID:???
PHPのglob()は、glob('**/*.php') でディレクトリを再帰的に辿ってくれないんでしょうか。
あるいは、辿ってくれるような関数はないでしょうか。
0554nobodyさん2006/01/01(日) 09:43:59ID:???
PHP 5.1.1 Released
0555nobodyさん2006/01/01(日) 10:29:42ID:???
>>550
すみません〜
「何文字目」じゃなく「何ビット目」ですね。
あと他の人が作ったスクリプトなど読んでいるとやはりビット演算で求めているみたいなんで
それでやってみます。ありがとうございました。
0556nobodyさん2006/01/01(日) 10:38:01ID:???
>>553
無いんじゃないかな
再帰的に処理させるだけだから自分で作ると良いと思う。
0557nobodyさん2006/01/01(日) 10:56:10ID:???
>>556
ありがとうございます。ないのが確認できただけでもよしとします。
今から自作してみようと思いますが、もしかしたらまたここで聞くかもしれませんが、
そのときはよろしくお願いします。
0558nobodyさん2006/01/01(日) 12:00:44ID:???
質問です。

htmlspecialcharsで変換した文字列から、変換前の文字列に戻すにはどうすればいいですか?
0559nobodyさん2006/01/01(日) 12:03:54ID:???
>>558
逐一置換
0560nobodyさん2006/01/01(日) 12:15:48ID:ckK+9Xqr
>>559
やっぱりそれしかないんでしょうか…
html_entity_decodeで戻せることはわかったんですけど、サポートしてるのが4.3以上だから厳しい…
0561nobodyさん2006/01/01(日) 13:20:34ID:???
>>560
4.3より古いバージョンを使ってるほうがよっぽど厳しいというかなんというか・・・
0562nobodyさん2006/01/01(日) 13:44:05ID:???
関数化しときゃいいだろ。
0563nobodyさん2006/01/01(日) 14:25:36ID:???
MacOS X 10.4 で PHP5.1.1 CLI つかってます。
ネストしたディレクトリを一気に作成しようとして
<?php mkdir("hoge/geji", 0777, TRUE); ?>
というプログラムを実行させると、
Warning: mkdir(): No such file or directory
というエラーがでてしまいます。
PHP5からはmkdir()の第3引数をつかえば、mkdir -p 相当の動作になると思っていたのですが、勘違いですっけ?
0564nobodyさん2006/01/01(日) 22:46:05ID:???
>>563
ディレクトリの区切り文字がスラッシュとは限らない
http://jp.php.net/manual/en/function.mkdir.php#53075
05655632006/01/02(月) 10:55:07ID:???
>>564
MacOS X でやっているので、スラッシュで問題ないと思います。
0566nobodyさん2006/01/03(火) 00:05:44ID:???
<?php mkdir("hoge/geji", 0777); ?>
<?php mkdir("hoge", 0777, TRUE); ?>

この辺りするとどうなる?
0567nobodyさん2006/01/03(火) 11:04:22ID:???
substr関数で文字列の末尾1文字を削除することはできますか?

【 abcd 】 → 【 abc 】
【 あいうえお 】 → 【 あいうえ 】
0568nobodyさん2006/01/03(火) 11:21:13ID:???
mb_substrで-1かな
0569nobodyさん2006/01/03(火) 11:22:58ID:???
>>567
つ substr($hoge, 0, -1);

マニュアル読めばそっくりそのまま出てるんだがな。
0570nobodyさん2006/01/03(火) 12:14:24ID:???
<?php
$hoge = "a-b_c.d#e";
$enc1 = urlencode($hoge);
$enc2 = rawurlencode($hoge);
$enc3 = base64_encode($hoge);
?>
<html><body>
<a href="/?<?php echo $enc1; ?>">LINK1</a><br>
<a href="/?<?php echo $enc2; ?>">LINK2</a><br>
<a href="/?<?php echo $enc3; ?>">LINK3</a><br>
</body></html>

このソースをブラウザで表示すると、IE 6では#が%23に変換されるのに、
FireFox 1.5では#のままです(urlencode系)。
#などを含む文字列をurlに埋め込む場合はbase64_encodeを使用する
方が安全なんでしょうか??
0571nobodyさん2006/01/03(火) 12:21:09ID:???
つurl_encode_in_sp
05725702006/01/03(火) 12:54:37ID:???
>>571
英語版マニュアルも検索しましたが、url_encode_in_spというのは
見当たらないのですが・・・。

あと、>>13のソースで確認しましたが、サーバでは有効でないようです。
(PHP 5.0.5です)
0573nobodyさん2006/01/03(火) 13:38:38ID:???
>>572
url_encode_in_spなんてものは知らない(ググル先生もご存知無い)けど、
鯖に文字として#を渡したい場合は、urlencodeで十分だよ。
ブラウザによって変わるつーのは単に確認ミスでしょ。
0574nobodyさん2006/01/03(火) 15:24:35ID:dg0Kk76m
ほんっとくだらない質問ですみません。PHPはPerlより簡単っていいますけど、
何%くらい簡単なんですか?概算でかまいません。
0575nobodyさん2006/01/03(火) 15:37:40ID:???
$url = parse_url($u);
$host = $url['host'];
$path = $url['path'];
$query = $url['query'];

if(isset($query)){
$query = "?".$query;
}else{
$query = "";
}
$fp = @fsockopen($host,80,$errno,$errstr,30);
$header = "GET ".$path.$query." HTTP/1.0\r\n";
$header .= "Host: ".$host."\r\n";
$header .= "User-Agent: PHP/".phpversion()."\r\n";
$header .= "\r\n";

fputs($fp,$header);
while (!feof($fp)) {
echo fgets($fp, 1024);
}
fclose($fp);

フォームから受け取ったURLを開くと時々、Apacheのテストページが表示されることがあるんですが正常にそのHPを表示させる方法は無いでしょうか?
環境はXREA S181鯖です。
Apacheのテストページが表示されるURLはhttp://hogehoge/?id=hogeなどの場合です。
0576nobodyさん2006/01/03(火) 15:40:37ID:???
>>574
そんな質問をするあなたにはとても難しいです><
0577nobodyさん2006/01/03(火) 15:44:00ID:???
>>574
だいたい2%くらい
0578nobodyさん2006/01/03(火) 15:47:52ID:???
>>574
お手軽にいじる分には30%くらい。
真面目にチューニングはじめると-10%くらい。
0579nobodyさん2006/01/03(火) 15:49:19ID:???
>>574
Perlが理解できてれば超簡単。10%くらいの時間であっさり習得。
WebProg初めてならどっちもさほど変わらん。
0580nobodyさん2006/01/03(火) 15:50:41ID:???
>>575
> Apacheのテストページが表示されるURLはhttp://hogehoge/?id=hogeなどの場合です。
その指定の場合には、どういうURLにアクセスすれば正解の予定なんでしょう?
0581nobodyさん2006/01/03(火) 15:54:11ID:???
>>575
同じURLをブラウザで開けば正常に表示されるって意味?
前情報がすっぽ抜けすぎててわけわからん。
0582nobodyさん2006/01/03(火) 16:06:24ID:???
何%簡単って、100%簡単だとどういう状態?
0583nobodyさん2006/01/03(火) 16:35:09ID:???
>>581氏
同じURLをプラウザで開けば正常に表示されるということです。
本来ならUser-agentを偽装した状態でそのURLのページを表示するってことです。
それが何故かApacheのテストページに・・・
0584nobodyさん2006/01/03(火) 16:59:26ID:???
>>583
hint:port
05855632006/01/03(火) 18:02:58ID:???
>>566
どうもありがとうございます。

<?php mkdir("hoge/geji", 0777); ?>
//=> Warning: mkdir(): No such file or directory

<?php mkdir("hoge", 0777, TRUE); ?>
//=> 'hoge' というディレクトリが作成されます。

mkdir()で、せめてファイル名が表示されれば手がかりになると思うのですが。
引き続き、お助けをお願いします。
0586nobodyさん2006/01/03(火) 18:07:08ID:???
>>585
いや、前者は「hogeがないからhoge/gejiは作れへんよ」という事だろ。
hoge作ってからhoge/geji作ればいいだけの話。
0587nobodyさん2006/01/03(火) 18:47:40ID:???
>>584
portを80番から変えるとしてもフォームから受け取ったURLのポート番号を80以外で見つけるのは無理じゃないですか?
0588nobodyさん2006/01/03(火) 18:52:50ID:???
>>583
User-Agent変えられるブラウザ使って見るとどうなる?
単に相手の鯖の仕様だと思うが
0589nobodyさん2006/01/03(火) 19:03:21ID:???
>>583
つかテストページ帰ってくるときのhttpエラー番号に何番が返ってきてるんだよ。
0590nobodyさん2006/01/03(火) 19:13:29ID:???
>>589氏
HTTP/1.1 403 Forbiddenです。
画面はApacheのテストページです。
>>588氏
鯖の仕様だと思い他サイトにあるProxyなどPHPのfsockopenでやっていると思われるもので同じURLを試してみると通常に表示できます。
0591nobodyさん2006/01/03(火) 19:16:19ID:???
>>590
403が返ってきてる時点でダメだろ。
0592nobodyさん2006/01/03(火) 19:19:27ID:???
>>590
User-agentがイレギュラーだと弾くようにしてあるんじゃないの?
まず正常なシーケンスで試してから偽装なり何なりやればいいのに。
0593nobodyさん2006/01/03(火) 19:20:08ID:???
つか>>590は基礎的な部分がすっぽ抜けてると思われ
0594nobodyさん2006/01/03(火) 22:45:27ID:???
mojavi2でアプリを作っているのですが、ユーザのセッションのところで勉強が
足らず足止めを食らっています。

自分で勉強しますので、サンプルや参考になるドキュメントなど教えて頂けないでしょうか?

具体的につまづいている所は、mojavi2では、セッション、認証などあるのですが、誰がどの
ユーザIDかをどのようにセッションで繋いでいくのかあたりの知識がなくてよくわかりません。

05955942006/01/03(火) 23:01:01ID:???
ちょっと調べた限りでは、

例えばDBにsessionというテーブルを作ってSIDとユーザIDに結び付けて、ユーザIDを
特定するという感じだと思うのですが、mojavi2だとどうするのかがよくわからないというか

0596nobodyさん2006/01/03(火) 23:13:45ID:???
>>594
Mojaviの話はこちらでどうぞ。

[PHP]フレームワークについて語るスレ2[総合]
http://pc8.2ch.net/test/read.cgi/php/1135847024/
05975942006/01/03(火) 23:35:32ID:???
>>596
そっちで質問するとここは語るスレだと怒られたので…
0598nobodyさん2006/01/03(火) 23:45:15ID:???
もしかして
> Mojavi初心者なんですが
> エスパー募集してもよろしいでしょか?
って書いた人?
だとしたらその後、質問はOKだけどエスパー募集はナシっていう流れだったんだけど。
0599nobodyさん2006/01/04(水) 00:05:04ID:???
>>586
元々の質問>>563までリカーシブに読んでやれよ。
> PHP5からはmkdir()の第3引数をつかえば、mkdir -p 相当の動作になると思っていたのですが、勘違いですっけ?
PHP5なら2階層以上のディレクトリを一発で掘れるんじゃないの?って話だろ。

http://php.s3.to/man/function.mkdir.html
> bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )
> 注意: パラメータ recursive は、 PHP 5.0.0 で追加されました。
って話だよな。俺もこのパラメータは使ったことないから正直わかんね。
PHP5のテスト環境は会社に行けばあるから正月終わるまで待ってくれれば試してみる。
0600nobodyさん2006/01/04(水) 01:01:05ID:???
他人が書いたソース読んでたら

$lv_bSize = (int) ord(($lv_bytes[0]) + (ord($lv_bytes[1]) << 8) + (ord($lv_bytes[2]) << 16) + (ord($lv_bytes[3]) << 24);

というのがあったんだが、こういう << ってどういう意味があるんじゃ?
06015862006/01/04(水) 01:08:45ID:???
>>599
>>563も読んだよ。でも>>585の前者って第三引数入れてないじゃん。
何か俺間違った話してる?

>>600 ビットシフト
0602nobodyさん2006/01/04(水) 01:16:38ID:???
>>601
>>585のやつは>>566で「これやってみてくれ」って言われたからだな。
意図不明。

とりあえず>>563の
> <?php mkdir("hoge/geji", 0777, TRUE); ?>
> というプログラムを実行させると、
> Warning: mkdir(): No such file or directory
だけ着目してればいいんちゃう?
0603nobodyさん2006/01/04(水) 01:29:58ID:???
>>585
<?php mkdir("hoge/geji", 0777); ?>
↓
<?php mkdir("./hoge/geji", 0777); ?>
<?php mkdir("/usr/hage/hoge/geji", 0777); ?>
とかでやってみ。Windowsなら¥かDIRECTORY_SEPARATORでセパレート。
06046032006/01/04(水) 01:33:03ID:???
あー違う。適当に摘んでるからこれだ…

>>563
<?php mkdir("hoge/geji", 0777, TRUE); ?>
↓
<?php mkdir("./hoge/geji", 0777, TRUE); ?>
<?php mkdir("/usr/hage/hoge/geji", 0777, TRUE); ?>
だな
06056002006/01/04(水) 01:34:26ID:???
>>601
ありがとう!!
0606nobodyさん2006/01/04(水) 14:08:10ID:???
$_SERVER['PHP_SELF']って偽装できますか?
0607nobodyさん2006/01/04(水) 14:47:33ID:???
スパムメールを送るんですか?
0608nobodyさん2006/01/04(水) 14:55:03ID:???
ちがう。
作ったスクリプトの<form >で結構使ってるから気になっただけだよ。
$_SERVER['QUERY_STRING']とかもどうでしょうか。
鯖がやられてなければ大丈夫だと思いますけど
どうでしょうか。
0609nobodyさん2006/01/04(水) 15:05:40ID:???
偽装する意味はあるの?
0610nobodyさん2006/01/04(水) 15:10:24ID:???
偽装される確率はどうなの?
0611nobodyさん2006/01/04(水) 15:25:21ID:???
偽装される確立を議論するなんて何考えてるの?
0612nobodyさん2006/01/04(水) 15:26:33ID:???
>>606
「偽装される」ってのが何を意味しているかは知らないけど、
echo $_SERVER['PHP_SELF];
とか
echo $_SERVER['QUERY_STRING'];
とかすると、クロスサイトスクリプティング脆弱性が出来上がるよ。
'
>>610
セキュリティを考える場合確率は関係ないだろ。
06136122006/01/04(水) 15:27:07ID:???
echo $_SERVER['PHP_SELF'];
ねorz
0614nobodyさん2006/01/04(水) 15:28:34ID:???
なんで
echo $_SERVER['PHP_SELF];
がクロスサイトスクリプティングになるの
0615nobodyさん2006/01/04(水) 15:31:33ID:???
>>614
パスインフォが通るサーバ設定だと
/hoge.php/">
とかを$_SERVER['PHP_SELF']に入れられるから。
0616nobodyさん2006/01/04(水) 15:35:50ID:???
入力側を偽装する意味がわからん・・・
action属性を誤魔化すぐらいならwebサーバに直接叩きにいくだろうし。
0617nobodyさん2006/01/04(水) 15:39:08ID:???
>>616
クロスサイトスクリプティングをしらないのか!?
0618nobodyさん2006/01/04(水) 15:51:58ID:LqFUITlR
class Hoge{
var $hoge;
}
と、var宣言するのとしないのとで、機能的な違いは何かありますか?
0619nobodyさん2006/01/04(水) 15:53:36ID:???
Hoge->hogeで参照できん
0620nobodyさん2006/01/04(水) 15:54:58ID:???
俺もよく$_SERVER['PHP_SELF']つかうけど、
チェックボックスと、プルダウン選択だけなら問題ないよね?
セキュリティ考慮は全然してなかったからそろそろ考えないといかんな・・・
0621nobodyさん2006/01/04(水) 15:59:06ID:???
>>620
htmlspecialcharsを噛ませろ。

http://www.ipa.go.jp/security/awareness/vendor/programming/a01_02.html
http://takagi-hiromitsu.jp/diary/20051227.html#p01
0622nobodyさん2006/01/04(水) 15:59:10ID:???
トラックバック送るのまんどくせ
0623nobodyさん2006/01/04(水) 16:15:05ID:???
>>621
これはいい参考サイトを・・THX!
0624nobodyさん2006/01/04(水) 16:18:46ID:???
つhttp://pear.php.net/package/Services_Trackback/
0625nobodyさん2006/01/04(水) 16:20:39ID:???
キーワードから関連するトラックバックURLやらpingurlやらを
自動で収集するプログラムないかな?
0626nobodyさん2006/01/04(水) 16:42:21ID:???
>>625
自分で探すか作るかしろよ。
06276182006/01/04(水) 16:42:38ID:LqFUITlR
>>619
宣言しなくても、値を入れれば参照できますよね?
0628nobodyさん2006/01/04(水) 16:58:59ID:???
>>627
public、protected、privateとか設定汁
ooするならあったほうがよし。
0629nobodyさん2006/01/04(水) 17:04:28ID:???
pearとpeclってどういう関係なんでしょう?
久しぶりにWindowsにPHP 5.1.1をインストールしてgo-pear.batで
PEARをインストールしたのですが、pear.batは拡張子の後ろに
[_old]が付いていました。[_old]をとるとUNIX上と同じくpearコマンドが
使えますが、もう一つあるpecl.batを使うべきなんでしょうか?

pecl list-all と pear list-all した結果では表示される内容も異なるのですが
このままpearコマンドを使用しても良いのでしょうか???
0630nobodyさん2006/01/04(水) 17:06:38ID:???
>>629
PEARはPHPで書かれた拡張
PECLはバイナリ形式の拡張
0631nobodyさん2006/01/04(水) 17:09:39ID:???
peclってどう読んでる?
pearはペアで間違いないと思うのだけど
06326292006/01/04(水) 17:16:41ID:???
>>630
速レスありがとうございます。
ではpearは推奨されないということではないのですね。
安心しました。

>>631
"pick・le"と読んでます。
ピクルス(漬物)だったかと。
0633nobodyさん2006/01/04(水) 17:20:14ID:???
>>625
マルチうざ
0634nobodyさん2006/01/04(水) 17:22:10ID:???
ttp://pear.php.net/manual/en/introduction.php
PEAR 〜 is pronounced just like the fruit
PECL (pronounced "pickle") used to be a sub-repository of PEAR for C extensions
0635nobodyさん2006/01/04(水) 20:14:13ID:???
>>632
中身違うがな。推奨されないとかだれもいっとらんがな。
0636nobodyさん2006/01/05(木) 00:06:39ID:???
phpとmysql使うつもりですが扱う言語を気にする必要はないですよね?
てかphpはutf8扱えるんですよね?
0637nobodyさん2006/01/05(木) 00:50:34ID:???
>>636
>扱う言語を気にする必要はないですよね?
ある

>てかphpはutf8扱えるんですよね?
別にphpに限らずperlでもrubyでも扱える。
0638nobodyさん2006/01/05(木) 01:41:35ID:???
PHPとMySQLでそれぞれUTF-8使ってれば
言語(日本語でもロシア語でもアラビア語でも)は
気にする必要ないですよね、って質問じゃなかったのか
0639nobodyさん2006/01/05(木) 02:16:10ID:???
>>638
仮にそうだとして>>636の文面だけで「おっけー」とは言えないなぁ
0640nobodyさん2006/01/05(木) 03:12:55ID:???
だね。
0641nobodyさん2006/01/05(木) 10:53:48ID:JFblkuhc
PHP4.3環境
日本語を含むヘッダーでメール送信をしたいのですが、
MACOSX10.4の付属メーラーで受信したとき送信者の日本語部分が文字化けしてしまいます。
本文、件名は文字化けしません。
WINでは問題ありませんでした。
まだ勉強中で、参考書の通りに書いているようなレベルですので
根本的に解っていないのかも知れませんが、

$header = "From: ROBO-ONE事務局 <[email protected]>"として

メッセージや件名はmb_convert_encodingでエンコードしていたので
同じように
$header = mb_convert_encoding($header,"EUC-JP","auto")
と書いても文字化けしてしまい

$header = mb_encode_mimeheader($header,"ISO-2022-JP")
では送信すらされませんでした。

OSX10.4環境でも問題なく表示するにはどのようにしたらよいのでしょうか。
0642nobodyさん2006/01/05(木) 11:40:43ID:GYuqexB9
MySQLのtextフィールドに5%とinsertできるけど、
それをphpで表示しようとすると printfでエラーとなってしまう。
%が問題だとおもうのだけど、いい方法ない?
0643nobodyさん2006/01/05(木) 11:46:11ID:???
>>642
%を%%に変換
06446422006/01/05(木) 12:34:14ID:GYuqexB9
>>643
助かった〜、ありがと
0645nobodyさん2006/01/05(木) 13:01:14ID:???
>>644
マニュアル読もうな
http://php.s3.to/man/function.sprintf.html
0646nobodyさん2006/01/05(木) 17:07:24ID:Bm50yWip
perlのgrep関数を使いたいときって、
phpではどうやってますか?
foreachで回してifで判定して新配列にpushしかないんですかね。
0647nobodyさん2006/01/05(木) 17:30:32ID:???
>>646
preg_grep() ?
06486462006/01/05(木) 17:38:41ID:???
すいません、自己解決しました。
array_filterで何とかなりそうです。

>>647
ありがとうございます。
正規表現のときはpreg_grepなんですね。
array_grepにすればいいのに・・・。
0649nobodyさん2006/01/05(木) 18:22:30ID:???
Perl互換の正規表現をコンパイルオプションでON/OFFしたときに
ごっそり利用可否が切り替わるんだから、関数名で識別できた方が分かりやすいよ
0650nobodyさん2006/01/05(木) 18:49:49ID:???
2ちゃんのトリップはcrypt関数を使うとおもうのですが
これに何を与えると2ちゃんと同じトリップになりますか?
0651nobodyさん2006/01/05(木) 19:21:46ID:???
FOXに聞け
■ このスレッドは過去ログ倉庫に格納されています