私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ【PHP】下らねぇ質問はID出して書き込みやがれ 90
php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
>>943
バージョンアップでどう変わったのか自分で調べることもできない低脳質問者のくせにやたらと饒舌だなw
バージョンアップでどう変わったのか自分で調べることもできない低脳質問者のくせにやたらと饒舌だなw
>コンピュータ業界で、そんなことが許されたのは、
許されないのはCOBO・・・おっと。
新しいバージョンに入れ替えてどうなるか調査しないで
モンク垂れることが許される業界は、コンピュータ業界
には無いな。
許されないのはCOBO・・・おっと。
新しいバージョンに入れ替えてどうなるか調査しないで
モンク垂れることが許される業界は、コンピュータ業界
には無いな。
メール送信のみのプログラムを走らせる
PHPのエラーは全て拾う
エラーが無かったらメールログを見る
正常に送信してたらスパムフィルタを疑う
スパムフォルダ等になければ遅延を疑う
PHPのエラーは全て拾う
エラーが無かったらメールログを見る
正常に送信してたらスパムフィルタを疑う
スパムフォルダ等になければ遅延を疑う
>>960
ありがとうございます
アパッチのエラーログには異常がないので、メールログに何か書いてあるみたいですが読み方がわかりません
スレ違いは承知していますがSENDMAILのエラーログの解説してるサイトを教えてもらえないでしょうか
もちろんググったんですが、似たような質問ばかりでてきて肝心のリンク先が切れてるのばかりで…
気に障ったら無視してください、引き続き自分でも探しますので
ありがとうございました
ありがとうございます
アパッチのエラーログには異常がないので、メールログに何か書いてあるみたいですが読み方がわかりません
スレ違いは承知していますがSENDMAILのエラーログの解説してるサイトを教えてもらえないでしょうか
もちろんググったんですが、似たような質問ばかりでてきて肝心のリンク先が切れてるのばかりで…
気に障ったら無視してください、引き続き自分でも探しますので
ありがとうございました
ログなんて数行なんだからだいたいは読み取れるだろ
あと忘れてたけど自宅鯖なの?ポート25では直接送れないのかもね
ログの件もそうだけどわからなかったら自宅鯖のくだ質行ってください
あと忘れてたけど自宅鯖なの?ポート25では直接送れないのかもね
ログの件もそうだけどわからなかったら自宅鯖のくだ質行ってください
三項演算子みたいに
$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;}
でもいいのですが、どうにかできないものでしょうか
よろしくおねがいします。
$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;}
でもいいのですが、どうにかできないものでしょうか
よろしくおねがいします。
>$a = if($b==='a'){0;}else if($b==='b'){1;}else{2;}
一行でちゃちゃっと書きたいんだろうけど、その発想は後々後悔する
複雑なら関数(メソッド)化したほうがいいと思う
一行でちゃちゃっと書きたいんだろうけど、その発想は後々後悔する
複雑なら関数(メソッド)化したほうがいいと思う
echo RelativePath("/hoge2/hoge3/hoge1" , "/hoge2/hoge3/mydir" );
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;
}
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;
}
よく質問の意図がわかったな
感心するわ。
俺ならちゃんと説明しろって答えてたな
何言ってるかわからんかった
感心するわ。
俺ならちゃんと説明しろって答えてたな
何言ってるかわからんかった
>>980
普通に分かるが・・・
普通に分かるが・・・
crypt() の仕様変わってる?
下のコードで $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
下のコードで $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
crypt ( string str, string [salt])
strは暗号化する文字列(8文字以上は同じになるので8文字まで。)
saltは暗号化するための2文字の文字列です。これはプログラム内に指定します。
saltによって返り値は変化します。また、返り値の最初の2文字にsaltが含まれ、その後の11文字が暗号化文字列になります。
strは暗号化する文字列(8文字以上は同じになるので8文字まで。)
saltは暗号化するための2文字の文字列です。これはプログラム内に指定します。
saltによって返り値は変化します。また、返り値の最初の2文字にsaltが含まれ、その後の11文字が暗号化文字列になります。
例が分かり辛かったかも知れない。
要するに、
crypt($password, '$1$zA/.AE/.$KwOIKMK9oPvXu6ybBNj/d/');
を複数回試行した時、$password が 4 文字以上の場合は常に同じ値が、
3 文字以下の場合は毎回異なる値が返るって話で。
要するに、
crypt($password, '$1$zA/.AE/.$KwOIKMK9oPvXu6ybBNj/d/');
を複数回試行した時、$password が 4 文字以上の場合は常に同じ値が、
3 文字以下の場合は毎回異なる値が返るって話で。
すまん。やはり CRYPT_SALT_LENGTH は関係ないと思うんだが…
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。毎回同じ結果。
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。毎回同じ結果。
>>987
md5のsaltが変なんだけど。なんで$で終わってないの?
md5のsaltが変なんだけど。なんで$で終わってないの?
>>988-989
申し訳ない、ただの手抜きです。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
申し訳ない、ただの手抜きです。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
>>991
magic_quotes_gpc をoffにはできないの?
magic_quotes_gpc をoffにはできないの?
>>992
解決に導いて下さってありがとうございました
解決に導いて下さってありがとうございました
// CRYPT_SALT_LENGTH=60
$password='aaaaaa' ;
echo crypt($password, '$1$zA$').'<br />' ;
echo crypt($password, '$1$zA$').'<br />' ;
違う結果になったよ。
$password='aaaaaa' ;
echo crypt($password, '$1$zA$').'<br />' ;
echo crypt($password, '$1$zA$').'<br />' ;
違う結果になったよ。
<?php
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 に対して充分な補完が行われない場合、コード位置によるゴミが入るバグと推測。
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 に対して充分な補完が行われない場合、コード位置によるゴミが入るバグと推測。
>>997
それはあなたが決めればいい。
ブラウザの認証ダイアログにそのまま文字列として表示されるよ。
サイトに複数の独立した領域を作って、それぞれでぜんぜん違うユーザー名:パスワードで管理したとする。
ユーザーはどっちのユーザー名が有効なのか、領域名で判断するんだ。
それはあなたが決めればいい。
ブラウザの認証ダイアログにそのまま文字列として表示されるよ。
サイトに複数の独立した領域を作って、それぞれでぜんぜん違うユーザー名:パスワードで管理したとする。
ユーザーはどっちのユーザー名が有効なのか、領域名で判断するんだ。
>>993-994
検証ありがとうございました。
確かに crypt() を記述する行番号によって出力結果が変わりました。
また salt を11文字以下にすると、$password が 4 文字以上でも出力結果が変わりました。
一方で salt の 13 文字目以降は、出力の 13 文字目以降に全く影響しませんでした。
公式のサンプルコードをそのまま使用する場合、
パスワードが 3 文字以下のユーザはログインできないことになりますね。
殆どのサイトはパスワードの文字数に制限をかけてはいるでしょうが…。
検証ありがとうございました。
確かに crypt() を記述する行番号によって出力結果が変わりました。
また salt を11文字以下にすると、$password が 4 文字以上でも出力結果が変わりました。
一方で salt の 13 文字目以降は、出力の 13 文字目以降に全く影響しませんでした。
公式のサンプルコードをそのまま使用する場合、
パスワードが 3 文字以下のユーザはログインできないことになりますね。
殆どのサイトはパスワードの文字数に制限をかけてはいるでしょうが…。
みんなの評価 :
類似してるかもしれないスレッド
- 【PHP】下らねぇ質問はID出して書き込みやがれ 80 (1001) - [98%] - 2009/2/18 6:30 ○
- 【PHP】下らねぇ質問はID出して書き込みやがれ 96 (1001) - [98%] - 2010/7/22 7:47
- 【PHP】下らねぇ質問はID出して書き込みやがれ 91 (1001) - [98%] - 2010/1/9 4:06 ○
- 【PHP】下らねぇ質問はID出して書き込みやがれ 92 (1001) - [98%] - 2010/2/15 17:01 ○
- 【PHP】下らねぇ質問はID出して書き込みやがれ 93 (1001) - [98%] - 2010/3/16 4:25
- 【PHP】下らねぇ質問はID出して書き込みやがれ 97 (1001) - [98%] - 2010/9/18 2:01
- 【PHP】下らねぇ質問はID出して書き込みやがれ 94 (1001) - [98%] - 2010/4/20 19:31
- 【PHP】下らねぇ質問はID出して書き込みやがれ 95 (1001) - [98%] - 2010/5/28 10:44
- 【PHP】下らねぇ質問はID出して書き込みやがれ 99 (1001) - [98%] - 2010/10/27 4:51
- 【PHP】下らねぇ質問はID出して書き込みやがれ 98 (1001) - [98%] - 2010/10/12 18:16
- 【PHP】下らねぇ質問はID出して書き込みやがれ 120 (1001) - [96%] - 2012/7/25 6:45
- 【PHP】下らねぇ質問はID出して書き込みやがれ 101 (1001) - [96%] - 2010/12/18 22:31
- 【PHP】下らねぇ質問はID出して書き込みやがれ 110 (1001) - [96%] - 2011/9/29 22:31
- 【PHP】下らねぇ質問はID出して書き込みやがれ 109 (1001) - [96%] - 2011/8/30 2:02
- 【PHP】下らねぇ質問はID出して書き込みやがれ 108 (1001) - [96%] - 2011/7/27 14:48
- 【PHP】下らねぇ質問はID出して書き込みやがれ 107 (1001) - [96%] - 2011/7/2 2:15
- 【PHP】下らねぇ質問はID出して書き込みやがれ 100 (1001) - [96%] - 2010/11/14 21:46
トップメニューへ / →のくす牧場書庫について