【PHP】下らねぇ質問はID出して書き込みやがれ 90
レス数が1000を超えています。これ以上書き込みはできません。
0001●
2009/11/14(土) 17:31:22ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 89
http://pc11.2ch.net/test/read.cgi/php/1255263534/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0908nobodyさん
2009/12/05(土) 22:59:29ID:???調子のりすぎた。
カンファレンスのスポンサーにもなってるのに、PHP on IISの話は全然でてこないなーと思って。
http://technet.microsoft.com/ja-jp/iis/ee794964.aspx
0909nobodyさん
2009/12/05(土) 23:20:54ID:???今すぐ土へ還るんだ
0910nobodyさん
2009/12/06(日) 00:39:40ID:NcEl5Lj3http://page2.xrea.jp/#php_mecab
http://cvs.php.net/viewvc.cgi/pecl/chasen/
こういうのが見つかったんですがcのファイルだけ置いてあってREADMEにVisualStudioでビルドしろって書いてありますが
これらはわざわざ製品買ってコンパイルしてやらないとphpで使えないってことでしょうか。
0911nobodyさん
2009/12/06(日) 01:06:36ID:???0912nobodyさん
2009/12/06(日) 01:48:25ID:???0913nobodyさん
2009/12/06(日) 02:07:54ID:lUTuxG8hC言語にも参照渡しあるでしょ。
アドレス渡しとか参照呼び出しとかとも言ったと思うけど。
0914nobodyさん
2009/12/06(日) 02:18:20ID:???0915nobodyさん
2009/12/06(日) 05:06:29ID:???0916nobodyさん
2009/12/06(日) 06:28:24ID:C3/Ead/T次回同じページを見るときに、GETリクエストで、
http://example.com/?a=1&b=1&c=1&d=1&e=1&f=1
みたいな感じでアクセスすると同じページが生成されますが、
ページによるとなんか暗号化?みたいにしてサーバ側でデコードしてやってるとこがありますよね?
http://example.com/aHwh2iuAwuihs2
みたいなランダムな文字列で。
これってどういう風にやるのでしょうか?
0917nobodyさん
2009/12/06(日) 09:58:37ID:???0918nobodyさん
2009/12/06(日) 10:27:22ID:C3/Ead/Tなんかそういう関数があるのでしょうか?
base64関数はありますが、これはちょっと用途的に違うような気もしますし。
0919nobodyさん
2009/12/06(日) 10:43:11ID:???・ランダムでユニークな文字列を作成して、
ユニークIDとGETの値をDBに入れておく
・GETの値で使用する値を取得、serialize+pearの暗号化+base64の組み合わせ
まぁ暗号化が一番バランスいいかなと
0920nobodyさん
2009/12/06(日) 10:47:42ID:C3/Ead/Tありがとうございます。
調べてちょっとやってみたいと思います。
0923nobodyさん
2009/12/06(日) 18:15:21ID:Sn8eXDuLPHP4向けのサンプルプログラム(書籍添付CDのコピー)を
PHP5の環境で動かしています。
フォームに"名前"を入力したら、「"名前"さん、ようこそ」と表示する
簡単なものですが、"名前"が表示されずに「さん、ようこそ」と表示されます。
HTMLやPHPソースの名前の変数名は一致しています。
フォームでの変数名指定、フォームの変数参照の規約は
PHP4とPHP5と違うのでしょうか?
0924nobodyさん
2009/12/06(日) 18:18:10ID:???0925923
2009/12/06(日) 19:05:20ID:Sn8eXDuLレスありがとうございます。
でもビックリです。
4から5に上げる時、みなさん修正されたんでしょうか?!
0926nobodyさん
2009/12/06(日) 19:06:54ID:???0927nobodyさん
2009/12/06(日) 19:07:38ID:???0928nobodyさん
2009/12/06(日) 19:13:03ID:???0929nobodyさん
2009/12/06(日) 19:16:51ID:???0931nobodyさん
2009/12/06(日) 19:26:30ID:???0932nobodyさん
2009/12/06(日) 19:31:17ID:???0933925=923
2009/12/06(日) 19:34:14ID:Sn8eXDuL>>927
「よくある」んですか?!
>>930
PHP4での記述形式が変わったのは、
$_POST関連だけなんでしょうか?
0934nobodyさん
2009/12/06(日) 19:35:32ID:???0935925=923
2009/12/06(日) 19:43:28ID:Sn8eXDuLレスありがとうございます
今後も変更の可能性があるのならば、
作るプログラムが小さい場合は、
PHPよりPerlの方が無難なのでしょうか?
0936nobodyさん
2009/12/06(日) 19:46:47ID:???どんなソフトでもバージョンアップはあるよ
0937925=923
2009/12/06(日) 19:54:46ID:Sn8eXDuLちゃんと動くようにするのにxxx万円かかります」なんて言ったら、
お客さん怒るんじゃないでしょうかw
私だっら怒りますよ。「そんな話は聞いてない!」ってw
0938nobodyさん
2009/12/06(日) 19:56:13ID:???本家のサポートは終わったけど、有償サポートしてる所があるわけ。
0941925=923
2009/12/06(日) 21:10:18ID:Sn8eXDuLそんなソフト(の開発者が作ったもの)は使うべきでないのに、
それを許して、多くの人が使ってるから
0942nobodyさん
2009/12/06(日) 21:12:35ID:???開発っちゃそういうもんさ
0943925=923
2009/12/06(日) 21:13:06ID:Sn8eXDuLコンピュータアーキテクチャが違う時のみ。
利用者の過去の資産が使えなくなる形でバージョンアップするのは
本来ならトウシロウと呼ばれるべき。
0945nobodyさん
2009/12/06(日) 21:41:35ID:???0946nobodyさん
2009/12/06(日) 22:23:54ID:???ここでうだうだ言ったところで仕様は変わらんよ
気に食わないならperlでもrubyでもjavaでも好きな言語選べや
0947nobodyさん
2009/12/06(日) 22:27:45ID:???団塊ジジイ乙
4で作ったら4で動かしていればいいだけ。
自動でバージョンアップは普通しない
たぶんPHPの設定がサンプルと違っているだけ
セキュリティの問題とかでわりと変わってる品
まあ、時代についていけない団塊世代はプログラムなんぞ
やるんじゃねぇってことだ
0950nobodyさん
2009/12/06(日) 22:50:07ID:???0952nobodyさん
2009/12/06(日) 23:52:36ID:???許されないのはCOBO・・・おっと。
新しいバージョンに入れ替えてどうなるか調査しないで
モンク垂れることが許される業界は、コンピュータ業界
には無いな。
0953nobodyさん
2009/12/07(月) 00:20:44ID:???0954nobodyさん
2009/12/07(月) 00:30:26ID:???0955nobodyさん
2009/12/07(月) 00:32:14ID:???0956nobodyさん
2009/12/07(月) 01:06:00ID:???0957nobodyさん
2009/12/07(月) 02:12:36ID:???0958nobodyさん
2009/12/07(月) 03:23:16ID:???0959nobodyさん
2009/12/07(月) 04:09:41ID:Q2sf5+Ka関数部分の内容は
mail('****@gmail.com', 'My Subject', "testFromMail"); ってだけです。
php.iniを確認すると、sendmail_path = /usr/sbin/sendmail -t -i となっています。
ためしに "/usr/sbin/sendmail -t -i" と"で囲んでも同じ結果でした。
何が問題と考えられますか?
どこがおかしいか、可能性を教えてもらえると幸いです。
宜しくお願いします
環境は、centOS5.3 apache2 php5.2.6
macのvmware-fusion上で動かしています。
0960nobodyさん
2009/12/07(月) 09:07:04ID:???PHPのエラーは全て拾う
エラーが無かったらメールログを見る
正常に送信してたらスパムフィルタを疑う
スパムフォルダ等になければ遅延を疑う
0961nobodyさん
2009/12/07(月) 10:48:28ID:???ありがとうございます
アパッチのエラーログには異常がないので、メールログに何か書いてあるみたいですが読み方がわかりません
スレ違いは承知していますがSENDMAILのエラーログの解説してるサイトを教えてもらえないでしょうか
もちろんググったんですが、似たような質問ばかりでてきて肝心のリンク先が切れてるのばかりで…
気に障ったら無視してください、引き続き自分でも探しますので
ありがとうございました
0962nobodyさん
2009/12/07(月) 11:06:03ID:???0963nobodyさん
2009/12/07(月) 11:08:02ID:???0964nobodyさん
2009/12/07(月) 15:32:12ID:???あと忘れてたけど自宅鯖なの?ポート25では直接送れないのかもね
ログの件もそうだけどわからなかったら自宅鯖のくだ質行ってください
0965nobodyさん
2009/12/07(月) 18:42:01ID:???$a = ($b===0)?0:1;
な感じで、
$a = if($b===0){0;}else if($b===1){1;}else{2;}
と言う風なことができたらいいなと思ったんですがsyntax errorが出てしまいます。
ふつうにif($b===0){$a=0;}else if($b===1){$a=1;}else{$a=2;}
でもいいのですが、どうにかできないものでしょうか
よろしくおねがいします。
0966nobodyさん
2009/12/07(月) 18:42:49ID:0YQe80X30967965,966
2009/12/07(月) 18:43:47ID:0YQe80X30968nobodyさん
2009/12/07(月) 18:55:21ID:???0969nobodyさん
2009/12/07(月) 19:29:56ID:???$a = ($b===0) ? 0 : ($b===1) ? 1: 2;
0971nobodyさん
2009/12/07(月) 19:47:39ID:???-1だったら?
0972nobodyさん
2009/12/07(月) 20:03:31ID:0YQe80X3この数字だとニュアンスが伝わらなかったですね・・
すいませんでした。
$a = if($b==='a'){0;}else if($b==='b'){1;}else{2;}
というような感じに書きたかったんです。
>>969
ありがとうございます。
なるほど三項演算子の入れ子っぽい感じでしょうか
しかしさっそく
$b='a';
echo 'a='.$a = ($b==='a') ? 0 : ($b==='b') ? 1: 2;
として試してみたところ
$aは2になってしまいました・・
$b='b' のとき、 $a=1 。
$b='c'とした場合や、$bが未定義のときは$aは2になってくれました。
そこで調べてみると、ネストした三項演算子の挙動とその対応策
というサイトに行きついて対応策が書かれていたので
分岐が少ないうちは()でくくろうかなと思います
ありがとうございました。
0973nobodyさん
2009/12/07(月) 20:08:37ID:???0974nobodyさん
2009/12/07(月) 20:17:18ID:???なので私もswitch推奨
0975nobodyさん
2009/12/07(月) 20:35:16ID:???一行でちゃちゃっと書きたいんだろうけど、その発想は後々後悔する
複雑なら関数(メソッド)化したほうがいいと思う
0976nobodyさん
2009/12/07(月) 20:38:28ID:???0977nobodyさん
2009/12/07(月) 22:33:22ID:Uy2a15lYhoge1フォルダからの相対アドレスを取得したいのですが、
どのようにやったらいいでしょうか?
0978nobodyさん
2009/12/08(火) 00:06:57ID:???function RelativePath( $basePath , $targetPath) {
$basePath = ereg_replace("/$","",$basePath);
$targetPath = ereg_replace("/$","",$targetPath);
$basePath = ereg_replace("^/","",$basePath);
$targetPath = ereg_replace("^/","",$targetPath);
$base = explode("/",$basePath);
$target = explode("/",$targetPath);
$targetCount = count($target);
$baseCount = count($base);
for ($i=0;$i<$targetCount and $i<$baseCount;$i++){
if ( $base[$i] == $target[$i] ){
unset( $target[$i]);
unset( $base[$i]);
}
}
if (count($base) ==0)
$path ="./";
else
$path = str_repeat("../", count( $base ));
$path.= implode("/",$target);;
return $path;
}
0980nobodyさん
2009/12/08(火) 00:51:08ID:???感心するわ。
俺ならちゃんと説明しろって答えてたな
何言ってるかわからんかった
0982nobodyさん
2009/12/08(火) 09:39:14ID:???下のコードで $password が 3 文字以下だと $str1 == $str2 にならん。
$password = 'aaa';
$str1 = crypt($password);
$str2 = crypt($password, $str1);
echo $str1 . "\n" . $str2;
▼出力結果例(PHP 5.3.1 / Win7 64bit)
$1$Vd5.4a3.$y6Jjb8HaT6UzUwuzlHCKp1
$1$Vd5.4a3.$eOEyiWRgt1JKH9FUKpJW60
0983nobodyさん
2009/12/08(火) 09:47:14ID:???strは暗号化する文字列(8文字以上は同じになるので8文字まで。)
saltは暗号化するための2文字の文字列です。これはプログラム内に指定します。
saltによって返り値は変化します。また、返り値の最初の2文字にsaltが含まれ、その後の11文字が暗号化文字列になります。
0984nobodyさん
2009/12/08(火) 09:55:49ID:???0985nobodyさん
2009/12/08(火) 10:08:19ID:???要するに、
crypt($password, '$1$zA/.AE/.$KwOIKMK9oPvXu6ybBNj/d/');
を複数回試行した時、$password が 4 文字以上の場合は常に同じ値が、
3 文字以下の場合は毎回異なる値が返るって話で。
0986nobodyさん
2009/12/08(火) 10:14:57ID:???0987nobodyさん
2009/12/08(火) 10:42:12ID:???CRYPT_SALT_LENGTH == 60
CRYPT_STD_DES == 1
CRYPT_EXT_DES == 1
CRYPT_MD5 == 1
CRYPT_BLOWFISH == 1
$password = 'aaa';
crypt($password, 'rl.3StKT.4T8M'); // Standard DES。毎回同じ結果。
crypt($password, '_J9..rasmBYk8r9AiWNc'); // Extended DES。毎回同じ結果。
crypt($password, '$1$rasmusle$rISCgZzpwk3UhDidwXvin0'); // MD5。毎回違う結果。
crypt($password, '$2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi'); // Blowfish。毎回同じ結果。
0989nobodyさん
2009/12/08(火) 10:51:13ID:???0990nobodyさん
2009/12/08(火) 11:13:17ID:???申し訳ない、ただの手抜きです。crypt() の公式マニュアルのサンプルコードでは、
crypt() 済みの文字列から salt 部分を切り出さずに全文使ってたから、その通りに。
公式のサンプル
$password = crypt('mypassword');
if (crypt($user_input, $password) == $password) { echo "Password verified!"; }
試しに salt を切り出して実行してみたけど、結果は同じ。
ちなみに下のコードを実行したところ…
$password = 'aaa';
$salt = '$1$rasmusle$';
echo crypt($password, $salt) . "\n";
echo crypt($password, $salt) . "\n";
echo crypt($password, $salt) . "\n";
for($i = 0; $i < 3; $i++) { echo crypt($password, $salt) . "\n"; }
for($i = 0; $i < 3; $i++) { echo crypt($password, $salt) . "\n"; }
こうなりました
$1$rasmusle$j.76fUGadpG60PYrj.lpj1
$1$rasmusle$3VBtfb3er4yAzFEKUB2Dy1
$1$rasmusle$PPO.hs4CYwNRgTFYlxOXu/
$1$rasmusle$1wrvgdwXYuAdAc8yapgcG1
$1$rasmusle$1wrvgdwXYuAdAc8yapgcG1
$1$rasmusle$1wrvgdwXYuAdAc8yapgcG1
$1$rasmusle$p4dvB0SB7HcE7HXi1oGhS0
$1$rasmusle$p4dvB0SB7HcE7HXi1oGhS0
$1$rasmusle$p4dvB0SB7HcE7HXi1oGhS0
0991nobodyさん
2009/12/08(火) 11:41:37ID:7sia6qguそれをstripslashesを使って削除しようと思い実行したのですが削除できません。
テキストフォームにバックスラッシュ無しで出力したいのですが何か削除する方法はありませんか?
0993nobodyさん
2009/12/08(火) 11:54:24ID:7sia6qgu解決に導いて下さってありがとうございました
0994nobodyさん
2009/12/08(火) 11:55:07ID:???$password='aaaaaa' ;
echo crypt($password, '$1$zA$').'<br />' ;
echo crypt($password, '$1$zA$').'<br />' ;
違う結果になったよ。
0995nobodyさん
2009/12/08(火) 12:01:39ID:???function echo_crypt($pw, $s){
echo crypt($pw, $s) ; //.'<br />' ;
}
$password = 'aaa';
$salt = '$1$rasmusle$';
echo echo_crypt($password, $salt).'<br />' ;
for($i = 0; $i < 2; $i++) { echo echo_crypt($password, $salt).'<br />' ; }
?>
これは全部同じ。
crypt()がsaltを補完してて、CRYPT_SALT_LENGTH に対して充分な補完が行われない場合、コード位置によるゴミが入るバグと推測。
0996nobodyさん
2009/12/08(火) 12:07:24ID:???0997nobodyさん
2009/12/08(火) 12:16:51ID:GGPotsAyrequire_once("Auth/HTTP.php");
$params=array(
"dsn"=>"mysqli://pearusr:pearpass@localhost/pear",
"table"=>"auth",
"usernamecol"=>"username",
"passwordcol"=>"password",
"db_fields"=>"*");
$myAuth=new Auth_HTTP("DB",$params);
$myAuth->setRealm("Pear Sample"); //←ココです
$myAuth->setCancelText("このページは表示できません。");
$myAuth->start();
if($myAuth->getAuth()){
print("ユーザ名:".$myAuth->getAuthData("unam"));
}
?>
申し訳ございませんが、上記のコードの$myAuth->setRealm("Pear Sample"); の部分が分かりません
このPear Sampleという領域名はいったい何を意味して、何の効果(動作)があるのでしょうか?
認証情報を識別するためのレルム名と書かれていますが、何の事かサッパリ分かりません
0998nobodyさん
2009/12/08(火) 12:31:27ID:???それはあなたが決めればいい。
ブラウザの認証ダイアログにそのまま文字列として表示されるよ。
サイトに複数の独立した領域を作って、それぞれでぜんぜん違うユーザー名:パスワードで管理したとする。
ユーザーはどっちのユーザー名が有効なのか、領域名で判断するんだ。
0999nobodyさん
2009/12/08(火) 12:36:35ID:???検証ありがとうございました。
確かに crypt() を記述する行番号によって出力結果が変わりました。
また salt を11文字以下にすると、$password が 4 文字以上でも出力結果が変わりました。
一方で salt の 13 文字目以降は、出力の 13 文字目以降に全く影響しませんでした。
公式のサンプルコードをそのまま使用する場合、
パスワードが 3 文字以下のユーザはログインできないことになりますね。
殆どのサイトはパスワードの文字数に制限をかけてはいるでしょうが…。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。