くだすれPHP(超初心者用)
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/06/12(月) 14:06:01ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
0538530=522
2006/09/28(木) 20:13:59ID:ESgbH1eMすごいのきたー。
これ使わせてもらいまっす。
ありがとうございました〜。
0539530=522
2006/09/28(木) 20:17:18ID:ESgbH1eM自分はユーザIDをセッションで保持することには余り抵抗が無いです
(単にドヘタレなだけだけど)。
ユーザIDとパスワードの両方を持ってるとまずいけどユーザIDだけなら
いいのでは?
あとはSQLインジェクションとかに気をつけて仮にユーザIDがばれても
悪さされないようにするのがいいと思います。
スレ汚しすまんとです。
0540長文ですいません。
2006/09/28(木) 20:21:03ID:???ありがとうございます!!!
じゃあ、当面は大丈夫だろうと、数回encodeして頑張ってみます。
もっと、勉強してからlogin用のフィールドを作り、ハッシュ化したりします。
本当にありがとうございます。
0541nobodyさん
2006/09/28(木) 21:59:01ID:???0542521=523=524=527=531=532=533=536
2006/09/28(木) 22:13:37ID:???ぅぉーがんばれー
そして、俺のMingに対しては誰も突っ込んでくれないんだな;;
もうちょっと文献探して見るかー。
0543長文ですいません。
2006/09/28(木) 22:22:41ID:???Ming、頑張ってください。
mingでflash作るなら、普通にflashで作ったほうが自分には早いので!笑
0544nobodyさん
2006/09/29(金) 01:33:21ID:???その処理のどこが危険なのか、サッパリ意味がわからん。
$useridはPOSTされた値じゃなくて、DBから取った値なんでしょ?
だったら、それをセッション変数に入れて使っても、何の危険も無い。
SQLインジェクション云々などと頓珍漢なことを言ってるヤツもいるけど、
セッション変数とSQLインジェクションは全く関係ないし。
>>541なんてかなりバカで、$useridを総当りとか言ってるけど、
セッション変数を総当りする(総当りに任意の値を格納していく)ことなんて出来ないし。
0546521......536=542
2006/09/29(金) 03:36:38ID:???勘違いしても、まぁ、しかないなかなぁ と思ったり思わなかったり。
でだ、そうなってくるとセッションって見れるん?とか不安を持ったりするんじゃないかな。
だとすると。ああ言う心配がでるのかと。
まぁ、レベルを下げた視野をで物事見ないと難しいよね。
>>541
に関してはナンセンス・・・。
0547nobodyさん
2006/09/29(金) 03:41:24ID:???そうか!
>>525はセッションとクッキーを混同してんのか!
セッション変数も、クッキーに格納した値と同じように
ユーザが中身を覗いたり改ざんしたり出来る…などと思い込んでるのかな?
0548長文ですいません。
2006/09/29(金) 08:10:44ID:???クッキーはブラウザ?、ユーザーのほうに保存されるって感じの認識かな。
$useridが簡単な値だと、セッションハイジャック、CSRFが簡単にされたり、
されたときが危険、なのかなぁって思って。
0550nobodyさん
2006/09/29(金) 11:37:32ID:???「$useridが簡単な値 → セッションハイジャック、CSRFが簡単にされる」
…などという無茶苦茶な論理構造をどうにかしろボケ。
どういう根拠でそんな100%間違ったこと言ってんだお前は。
スクリプト内の変数$useridに入れる値が簡単だろうが複雑だろうが、
セッションハイジャックやCSRFが発生する可能性とは全く関係ないことだぞ。
それからお前はIDを出せと言ってるだろうがチンカス。
0551nobodyさん
2006/09/29(金) 13:23:49ID:???セッションハイジャックされた時点でおわり
idが簡単とかいう問題じゃない
パスワードを暗号化してても認証後にハイジャックされたらパスワード関係ないし
0552nobodyさん
2006/09/29(金) 17:46:04ID:???ちゃんと説明しといて貶す!
やるねぇ
セキュリティに関して考える事はいい事じゃないかーヽ( ´ー`)ノ
がんばれー(*・ω・)
ヒント:CVS
私もコンパイルうまくいかなかったっけど、CVSの落としてきてCent3.7上で成功してるよ。
dependは、re2cとflex(GNUのやつ)だけだったはず。[@うちのLinux]
ちょっとまえにCent3.7でコンパイルさせたののSPECの該当部分。
BuildRequires: zlib-devel, perl,bison,libungif-devel,libpng-devel
Requires: libungif,libpng
0554nobodyさん
2006/09/29(金) 23:24:26ID:???鯖の負荷が高くてサービス不能攻撃が先に成立するけど。
0555nobodyさん
2006/09/30(土) 01:54:35ID:???3階間違えたら、画像の文字列を入力させられるよ。
0557nobodyさん
2006/09/30(土) 03:01:52ID:???ログイン時の失敗回数をカウントして画像の文字列入力などをさせることと、
セッションID総当り攻撃を防ぐこととは何の関係もないぞ。
総当りってのはログイン通過後のセッションIDを探る攻撃なわけで、
ログイン通過「前」の認証部分における制御は全く関係ない。
ところで、セッションID総当りって、パスワード(通常8〜12文字程度)総当りよりも
確率の低い(時間のかかる)攻撃であって、実際にはありえないだろう。
0558nobodyさん
2006/09/30(土) 11:13:19ID:???0559nobodyさん
2006/09/30(土) 12:04:04ID:???確率は低いと逝っても0じゃない以上、時間をかければ突破できる悪寒。
ログチェックとかで頻繁に検出して対処するしか無いと思う。
0560nobodyさん
2006/09/30(土) 13:42:55ID:???PHP標準のセッション使ってれば、まず通常考えうる時間内では無理。
さらに言えば、セッションIDをこまめに変更する仕組みをスクリプトに組み込めば良い。
>>559
そんなアホな攻撃、別の段階で検知されるだろう。っていうか検知すべきだろう。
0561nobodyさん
2006/10/01(日) 09:36:47ID:???変更する仕組みのデバッグが大変で、ほぼ固定が現実だと思う。
0562nobodyさん
2006/10/01(日) 12:25:20ID:???0563nobodyさん
2006/10/01(日) 12:38:56ID:???>変更する仕組みのデバッグが大変
大変じゃないよ。PHPにはセッションID再生成専用の関数があるんだから。
だからセッションIDとあるフィンガープリントを結びつけておいて、
フィンガープリントが異なったらセッションハイジャックが起きたものと見なし、
その時点でセッションIDを再生成し、異なるフィンガープリントでやってきた訪問者(おそらくクラッカー)の
IPを一定時間拒否すればよい。
0565nobodyさん
2006/10/01(日) 13:33:14ID:???どこが使いにくいのか具体的に指摘してみろっつーのボケ。
お前ずっと難癖つけてばっかりだけど、何も具体的なことが言えないんだな。
フィンガープリントには通常のブラウズでは変更されないような値を元に設定しておくので、
無駄にクラッカー認定されることはありえない。
お前のようなバカ頭で考えると、無駄に認定されまくり…の方法しか思いつかないんだろうな。
0566nobodyさん
2006/10/01(日) 14:18:02ID:DeMI3pkc$date1=date("Y年n月j日",$timestamp);
$date2=date("j,n,Y",$timestamp);
print($date1);
print($date2);
?>
このprintの部分、反映されると$date1と$date2が改行されず
くっ付いてしまうんですが、どうしたら改行できますか?
0567nobodyさん
2006/10/01(日) 14:28:03ID:???自分で改行を付けるヨロシ
・テキストとして -> \n を追加
・HTMLとして -> <br>を追加
0568nobodyさん
2006/10/01(日) 14:47:59ID:???この意味の違いは教えてください。
0569nobodyさん
2006/10/01(日) 15:31:12ID:DeMI3pkcprint($date1);<br>
print($date2);
?>
こういう感じですか?それだとエラーが出てしまうんですが。
0570nobodyさん
2006/10/01(日) 16:07:08ID:???・・・?!
まさかそう来るとは思わなかったわ・・
そりゃPHPの中に<br>書いちゃったら構文エラー吐くに決まってる。
print($date1 . "<br>");
>>568
最近似たようなの見たな
0571570
2006/10/01(日) 16:22:50ID:???ん、どうやら前スレぽいな
>>568
例えば
$a = 1; // 数値
$b = "1"; // 文字列
// 暗黙の型変換を許容した比較
$a == $b // true (暗黙の型変換で文字列が数値に変換され比較される)←暗黙の型変換
$a != $b // true ($a と $b は等しくない)
!$a == $b // false (演算子の優先順位により、先に!$aが評価され「0」になる)←演算子の優先順位
// 型変換を行わないより厳密な比較
$a === $b // false (型も比較する。この場合、文字列と数値なのでfalse)←型を含めた比較
$a !== $b // false (↑に同じ)
0572570
2006/10/01(日) 16:26:49ID:???0573nobodyさん
2006/10/01(日) 17:14:54ID:???error_reporting(E_ALL);を使っても
$hege = 2;//hogeのタイプミス
みたいなのは駄目ですよね?
0575nobodyさん
2006/10/01(日) 17:22:57ID:???なるほど。
でも、
$hoge = 3;
何かの処理。
$hege = 2;//hogeのタイプミス
みたいな感じで$hogeも使ってると、エラーも出ないですよね。
これはもうPHPはこうだ。って感じでなれるしかない感じですかね。
0576nobodyさん
2006/10/01(日) 17:28:35ID:???PHP5ならE_ALL | E_STRICTで使われていない旨の警告をしてくれるかもしれん。
が、そもそもPHPは変数の宣言は出来ないからどうしようもないというのが実情。
0577nobodyさん
2006/10/01(日) 17:36:33ID:???なるほど。とりあえず、PHP5の環境ではE_STRICT試してみます。
いまんとこPHP4使ってるので、気をつける。って感じで頑張ります。
0579nobodyさん
2006/10/01(日) 18:59:55ID:???っていうかそれが宣言に相当するのね
0580nobodyさん
2006/10/01(日) 20:20:13ID:???どこかのログにエラーとか出てくれないのですか?
0581nobodyさん
2006/10/01(日) 20:21:16ID:???0583nobodyさん
2006/10/01(日) 21:26:55ID:DeMI3pkc>print($date1 . "<br>");
あの、これもエラーになってしまうんですが。
0584nobodyさん
2006/10/01(日) 21:41:18ID:DeMI3pkc0585nobodyさん
2006/10/01(日) 23:22:23ID:???0587nobodyさん
2006/10/02(月) 00:09:50ID:???0588nobodyさん
2006/10/02(月) 07:16:11ID:???0589nobodyさん
2006/10/02(月) 08:09:50ID:???0590nobodyさん
2006/10/02(月) 15:51:11ID:???このたびは息子が覚えたての言葉を使いたいがあまり、
生半可な知識で余計な書き込みをしてしまいました。
>>585にはきつく言っておきますので、みなさんお許しください。
0591nobodyさん
2006/10/03(火) 21:24:34ID:nl5vMJY+ぱっと見、ちゃんと動いているように見えたのですが、
カタカナとマッチングしない文字の組み合わせで入力すると、
マッチングしないにもかかわらず、処理が通ってしまいました。
$_POST["hoge"]="アんたなんかにエレクチオンが分かるっていうの";
if(!(mb_ereg("^[0-9ア-ンーヴァ-ォヵヶ0-9]",$_POST["hoge"]))){
echo "カタカナと数字以外禁止";
}
$_POST["hoge"]="アんたなんかにエレクチオンが分かるっていうの";
これが通ってしまいます。
今はpreg_match_allを使っているのですが、これは上手く通す処理が記述できません
if(!($y=preg_match_all("/0-9/",$_POST["ShopNameKana"]))){
とすると数字だけ通す処理になりません。最終的には全角カタカナと半角数字、全角数字
以外を弾く処理にしたいのですが、どうしたらいいか御教jもといご教示下さい。
0592nobodyさん
2006/10/03(火) 21:33:25ID:???0593nobodyさん
2006/10/03(火) 22:48:58ID:???0594nobodyさん
2006/10/03(火) 23:11:44ID:???0595nobodyさん
2006/10/04(水) 00:50:49ID:???load data local infile "./new_data.csv" into table my_table(以下略
を実行すると、
fail sql: The used command is not allowed with this MySQL version
と表示されるけど、これってphpの問題?、それともmysqlの問題?
mysqlコマンドから問題無く読み込めるのでmysqlは無実っぽいけど?
0596nobodyさん
2006/10/04(水) 01:01:08ID:???0597nobodyさん
2006/10/04(水) 02:09:37ID:???phpからは load data local infileコマンドが実行できないのはなぜかってことだろ。
同じ鯖でバージョンが違うってことも無いし、コマンド実行権が違うことも無い。
0598nobodyさん
2006/10/04(水) 07:30:33ID:???これは関係あるのかな
http://dev.mysql.com/doc/refman/4.1/ja/load-data-local.html
PHPで可能なら他人のファイルも読み込めるということになるからな
0599591@携帯で改行ずれてそう
2006/10/04(水) 09:17:36ID:b45YYBRXサーバはLinuxだけど、PHPもHTTPDもシフトJISにしてあります。
日本語をプログラム内に含めるなとの指摘は自分がまだそれに違和感を覚えるほど
テクがないのと、mb_使えばいいって発想でとりあえず保留
(ソースにはコメントアウトして記載してあるけど
通すべき文字列まで弾かれるので保留が正しい理由)。
0600nobodyさん
2006/10/04(水) 09:31:36ID:???preg_matchにてsjis文字コードを指定振り分けして通す
だが、sjisを使う限り確実とは言えない
これはmbに関して振り分けしても同じ事が言える
どちらにしろ、一般利用ならば気にする事でも無いが
つか、アンタに言っても自我を通して文字指定を頑なに通すから無駄なんでしょうが
0601599
2006/10/04(水) 09:52:57ID:WY3OniKcSJISにしとけばとりあえずいいんじゃない?っていう初学者的発想です。
mbとSJISがダメなのか・・・。
ありがとうございます。ちょっと調べながら考えてみます。
0602nobodyさん
2006/10/04(水) 10:09:30ID:???phpじゃなくてmysqlがエラー出すのが変だが。
phpのバイナリ入れ替えるしか。
0603nobodyさん
2006/10/04(水) 10:21:08ID:???頭膿んでないか?
どう斜め読みしても、そんな理屈にはならんと思うが
2chじゃない他の駆け込み寺を探して聞く方が良い
レベルとかそういう事ではなく、意固地で柔軟な考えができない奴はトラブルを起こし
2chのような場で質問をするには不向きなタイプではないと思われ
0605nobodyさん
2006/10/04(水) 15:01:03ID:???0606nobodyさん
2006/10/04(水) 15:14:03ID:???0607nobodyさん
2006/10/04(水) 16:25:40ID:WY3OniKc配列$Aarrayを作る方法を教えてください。
例:
$A="ABCDE"だったら$A[0]"=A " $A[1]="B" $A[2]="C"みたいな
感じになるようにしたいです。
0608nobodyさん
2006/10/04(水) 16:36:08ID:???$A = 'ashitaha harerutoiina';
$Aarray = array();
for ($i = 0; $i < strlen($A); $i++)
{
$Aarray[] = $A[$i];
}
0609nobodyさん
2006/10/04(水) 16:40:48ID:???0612nobodyさん
2006/10/04(水) 16:49:56ID:???http://jp.php.net/manual/ja/function.preg-split.php
例 2. 文字列を文字要素に分割
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
0614nobodyさん
2006/10/04(水) 16:51:03ID:???608じゃなくて611
0615nobodyさん
2006/10/04(水) 16:52:02ID:???0616nobodyさん
2006/10/04(水) 16:55:19ID:WY3OniKcありがとう。マニュアルに書いてあるとは知らなかったです。
ぐぐっててなんか違うのばっかり出てきたからテクニカルなこと
しなきゃだめなのかと思ってました。
//マニュアルよりグーぐるっていうのがダメなのかしらん・・・。
0618nobodyさん
2006/10/04(水) 16:59:20ID:???0619nobodyさん
2006/10/04(水) 17:16:40ID:???echo $str[2];
結果: s
これ出来るの知らなかった・・・。でもあまり使うときないかなぁ。
0620nobodyさん
2006/10/04(水) 17:20:04ID:???検索をすると、一部の語(猫とだけ検索すると)だけが、?となります。
print_rなどで見ると↓のようになります。
Array ( [0] => ? )
Array ( [0] => 犬 )
ただ、複数の語で検索すると、正常に動作します。
Array ( [0] => 猫 [1] => 犬 )
Array ( [0] => 犬 [1] => 猫 )
これはどういったら直るでしょか?
phpもdbも全てEUCで書いてます。
どうか教えてください。
0622nobodyさん
2006/10/04(水) 17:39:04ID:???わかりずらくてすいません。php5、mysql5で、検索でdbからデータを抽出して
検索結果を表示させようとしているのですが、「猫」というキーワードで
検索すると、DBには猫というキーワードが入っているのに「該当するものは無い」と
表示されてしまいます。ただ、and検索で、「猫」と「犬」で検索すると、
それに当てはまるのもが表示されます。
これで、解りますかね??説明下手ですいません><
0624nobodyさん
2006/10/04(水) 17:54:17ID:???とりあえず、↓のようにデータを取得してます。
$keyword = trim(stripslashes($_GET['keyword']));
$keyword = mb_convert_kana($keyword, 's');
$arraykey = explode(" ", $keyword);
$where = " WHERE (tag LIKE '%$arraykey[0]%')";
for($i=1; $i < sizeof($arraykey); $i++){
$where.= " AND";
$where.= " (tag LIKE '%$arraykey[$i]%')";
}
$sql = "SELECT * FROM table1 ".$where." ORDER BY date DESC
LIMIT ".$PAGESIZE*($page-1).", $PAGESIZE";
これにmysql_fetch_arrayでデータを取得して、表示させてます。
0626nobodyさん
2006/10/04(水) 18:05:15ID:???ああ、「犬」は出るんだね。
0627nobodyさん
2006/10/04(水) 18:07:55ID:???はい。犬や魚は普通に検索できるんです。
猫が何故か、ダメで、<!-- 美乳 -->を書くと直るようなことも
聞いたので書いてみても、変わらなかったです。
0628nobodyさん
2006/10/04(水) 18:09:15ID:???最初から化けてる?
0629nobodyさん
2006/10/04(水) 18:13:31ID:???でも、複数(犬と猫)で検索だと、最初から文字化けしてません。
0630nobodyさん
2006/10/04(水) 18:24:18ID:???shift-jisからeucへの変更で直らんかねぇ
mbstringの設定ってeuc読み込みSJIS吐き出しなん?
0631nobodyさん
2006/10/04(水) 18:39:53ID:???mbstring.func_overload 0 0
直らなかったです。。
phpの設定は↓のようになってます。
mbstring.http_input auto
mbstring.http_output EUC-JP
mbstring.internal_encoding EUC-JP
mbstring.language Japanese
0632nobodyさん
2006/10/04(水) 18:41:00ID:???0633nobodyさん
2006/10/04(水) 18:56:23ID:???mbstring.http_output EUC-JP か・・・。
default_charsetもEUCなのかい?・・・。
0634nobodyさん
2006/10/04(水) 19:15:30ID:???前に、文字化けで大分悩んで、DBのほうもujisにちゃんと設定して
あるんですよね。
何故、「猫」だけ化ける><
0635nobodyさん
2006/10/04(水) 19:19:58ID:???euc読み込みsjis吐き出しだからなぁ・・・
■ このスレッドは過去ログ倉庫に格納されています