元スレくだすれPHP(超初心者用)4
php覧 / PC版 /みんなの評価 : ○
551 = :
なるほど、WHEREで照合ですか・・・
だいぶググってみましたが
よくわからないです。
入門サイト見ながらやってるんですが
>>548,549
のっけから間違っちゃってるってことでしょうか?
552 = :
DBとPHPの入門書を各々一冊ちゃんと読んでからのほうがいいと思うよ
553 = :
先輩にも「そういう質問が来るとは思わなかった」と言われました。
先輩2人は参考書も買わずに半日かからずに出来たそうです。
僕は2日かかってます。
自分でも何故こんなに理解力が無いのかと思うと嫌になります。
今日は帰りに入門書を買って帰ります。
ありがとうございました。
554 = :
>>553
認証部分なんて30分もかからん、多分その先輩もそうだろう
理解力ではなくて基礎が足りん
PHPの文法やアルゴリズム、DBの基礎とSQL構文、知っておくべきことを知らないから時間がかかる
知った後は早いもんだ
555 = :
DBに生パスワード置いとくなよ
絶対やるなよ
「パスワードをハッシュ化(暗号化)保存することを法律で義務化するくらいのことが必要だと思う」
http://neta.ywcafe.net/000910.html
556 = :
ログインが出来ればハッシュ化してやり直すつもりですが
とりあえずログインをやろうと思って
DBに追加したIDとPWをちゃんと読み込めるかどうか試そうと思って。
それでずっとつまづいてます。
自分でもすぐ出来ると思ったんですが・・・
今日中に終わらせると言ったもんだから今日中に終わらせないと
557 = :
そしてSQLインジェクション可能なのをまた1つ生み出すと・・・
559 = :
というかDBの用意はできてるの?
mysql_connect()とかで接続できてるの?
SQLの構文は知ってるの?
君がどこまで理解してるのかが全然わからないw
AUTHとか使って簡単に済ませちゃえば?
561 = :
>>560
>>558で$rowを事前に用意しようとするのが間違い
postのuseridとpswdでDBに対してSQL発行(SELECT文)して存在するかチェック
(>>555の点を注意するならハッシュ化したpswdで比較)
で、結果に応じて表示を行う
な?単純なものならこれだけだ
562 = :
>>561
ありがとう、わかったようなわからないような
でもなんとなく・・・いや、とりあえずもう少し頑張ってみる。
またきます。
563 = :
564 = :
AmazonでMySQLとPHPの参考書
人気高いやつを注文したっす
金曜日には届きますけど、それまで教えて貰いたいです。
あの・・・もしよければソースそのまま
どこかのアップローダにアップするので
訂正もしくは、ここは訂正すべき、という部分を指摘してもらえないでしょうか?
565 = :
>>511を見る限り、DBとの連携に手を出すにはまだ早い気がする。
566 = :
この程度でも手出せるのがPHP
567 = :
>>564
表面だけ取り繕っても大抵上手くいかないからやめとけ
569 = :
elseに書くか変数に入れりゃよかろ
570 = :
http://amezolog2.hp.infoseek.co.jp/source/up1633.zip
一応これのlogin.phpなんですけど~~(;;;;;;
8行目から23行目にかけてのとこなんすけどぉ~
ここにDBから呼び出したIDとPWを書いて認証したいんですけど
DBの書き方がわからへん・・・。
571 = :
572 = :
そこ取り繕っても後が続かないんじゃないかな。
その後、たぶんセッション引き回すんだろうし。
573 = :
>>570
$sql = "SELECT * FROM user_pwd WHERE user ='$user'and pass = '$pswd'";
$res = mysql_query($sql,$conn);
$resになにが入ってるか理解できてないと思う
$resにはDBのuser_pwdテーブルのuser列が$userで更にpass列が$pswdのオブジェクトが入ってる
言い換えると
$userと$pswdが一致してるレコードがあれば$resに格納
つまり君の言う認証はSQL文を発行した時点で完了してる
ま>>561さんが言ってるんだけどねw
574 = :
>>573
とりあえず間違ってる
575 = :
>>573
おまいも理解してねぇのか
結果セットはレコードそのものじゃねぇ、発行結果のオブジェクトだ
あとこの場合のSELECTはCOUNTで行数数えるだけでいい
で、結果セットからnum_rowsして1か0かで判断
576 = :
どうも。
今からやります。
できるかなあ。
577 = :
ひとつずつ取得すればいいと言われたのですが
$kekka="SELECT pass FROM user_pwd WHERE user=".$userid;
if ($_SERVER["REQUEST_METHOD"]=="POST"){
if($kekka=$pswd){
echo "Okie.";
}
elseif($kekka!=$pswd){
echo "bad.";
}
else{
echo "noID.";
}
}
こうですか・・??
578 = :
>>577
ダァァーー理解してねぇ
$kekkaにはSQL文が入るのに、なぜ$pswdと比較出来る!
動作だけならこう
$uid // POSTからとったユーザIDとする
$passwd // POSTからとったパスワードとする
$sql = "SELECT COUNT(*) FROM tablename WHERE userid='$uid' AND passwd='$passwd'"
$res = mysql_query($sql);
list($nums) = mysql_fetch_assoc($res);
if ($nums == 0){
//NG
}else{
//OK
}
579 = :
データベースどこ行ったんだよ。
580 = :
>>578
そんな危ないスクリプト教えんなよ
581 = :
$userid = $_POST['userid'];
$pswd = $_POST['pswd'];
$sql = "SELECT COUNT(*) FROM user_pwd WHERE user='$user' AND pass='$pswd'";
$res = mysql_query($sql);
list($nums) = mysql_fetch_assoc($res);
if ($_SERVER["REQUEST_METHOD"]=="POST"){
if($nums==0){
echo "bad";
}else{
echo "okie";
}
}
こうですか?
出来ないよーーーーーーーーーーーーーーーーーーーーわからない
焦る 軽いノイローゼ状態だー
582 = :
>>570を見た.結論からいうと>>552
何も分かってないのに偶然うまく動くとかえって自分の首を絞めるよ.
>>570のコードも addtest.php って本人が書いたわけじゃなくて
職場の既存コードのコピペじゃないの?
SQLインジェクション脆弱性あるよ.
>>578 $uid と $passwd をエスケープしないのは初心者にとって有害な例示だと思うよ.
583 = :
①接続する。
②SQL文を作る。
ユーザーリクエストを含めるときはインジェクション対策のために専用エスケープを忘れずに。
③発行する。
④結果セットを受けとる。
⑤ループさせるなり取り出すなりして表示。
⑥接続を切る。
584 = :
職場のではないですが、解説サイトのを少し見よう見まねしてます。
といってもSQL構文のところだけです。
他はナントナクはわかって書いてます。
「とりあえず動かしてミロ」とのことなので
セキュリティの事は後に言われると思います。
585 = :
>>579
そこからなのか・・・
>>580
そんなこと言ったら「担当替えろ」で終わりだ
そもそもモデル化してないのにゴチャゴチャやったら>>581みたいなことになる
まずは最低限の動作、そこから拡張しかないのだ、この場合
>>581
DBのオープンすらやってないってことでFA?
そのスクリプトには事前処理とかないわけ?
mysql_connectはどこかで使ってるか?(認証処理より前の段階で)
587 = :
先輩のチェックが入るんだから、
まずは動くところまで持っていくしかないな
そこから先輩もツッコミや指導を予定してるんだろうし
588 = :
>>585
モデル化とか関係ないし
とりあえずの動作も必要だが
それ以上にSQLインジェクションの事を考えさせる事の方が重要
589 = :
みなさんのレスをコメント化して見ながらやってるので
ソースもだいぶごちゃごちゃしてました。まとめますと今こんな事書いてます。
http://amezolog.hp.infoseek.co.jp/source/up8378.zip
590 = :
>>588
考えさせる・対策させる大切さは重々わかっとるが、
さすがに手順を踏まないと>>570がハゲないか?
591 = :
>>589
見た
WHEREのところで「user=」ってなってるけど、
user_pwdテーブルはIDとpassフィールドなんだよな?
じゃぁ「ID=」にしないと
592 = :
4行目から10行目までは認証処理だから、
11行目のifの中に入れたほうがいい
理由は、今のままじゃ毎回SQL発行しちゃうから
593 = :
今先輩が来て「こうすんだよ」と言って
ささっと解決しました。情けない。
たぶん「あらら、出来てないのね」と思われたと思います。
>>591
そう訂正されました。はい。
>>592
その通りでした。
そう訂正されました。
みなさん、ありがとうございます。
だけど、まだまだわかってないなぁ。
次はMD5化して登録と、ログインです。
これは出来そうな気がする・・・。
594 = :
if ($_SERVER["REQUEST_METHOD"]=="POST"){
$userid = $_POST['userid'];
$pswd = $_POST['pswd'];
$pswd2= md5($pswd);
$host = "localhost";
$conn = mysql_connect($host, "root", "");
$db_selected = mysql_select_db('webauth', $conn);
$sql = "SELECT * FROM user_pwd WHERE name='".$userid."' AND pass='".$pswd2."'";
$res = mysql_query($sql);
if(mysql_fetch_assoc($res)){
$url = "index.php";
header("Location:$url");
}else{
echo "エラー";
}
}
一応のせときます。
結局こうしました。
595 = :
お前な、まずココで聞く前に先輩に聞けよ。
2chで聞いてるなんてバレたら首にされかねんぞ。
596 = :
それもそうですね・・・確かに。
家だけにしときます。
忠告ありがとうございます。
597 :
でもさ。こんなのも教えられない先輩は間違いなく無能。
ここで聞くのもわるくない。
客先行く前にきちんと疑問点は解消しておけ。
出て行って大変だよ。
598 = :
それは違くね。
「とりあえず自力でやってみろ、教えるのはそれからだ」ってことじゃない?
何でもほいほい教えちゃうのはよくない。
599 = :
俺が先輩でも多分最初は突き放すな。検索すりゃ少なくとも動くもの作れるし、
作れないってことは検索力が欠けてるってことがわかるし。
ま、2chとか掲示板で聞いてたらぶん殴るがw
600 = :
まったく基礎が無いように見えるが、
どうしてそんな職に就いたかねぇ・・・
みんなの評価 : ○
類似してるかもしれないスレッド
- くだすれPHP(超初心者用)6 (958) - [97%] - 2009/8/19 4:11 ○
- くだすれPHP(超初心者用)5 (1001) - [97%] - 2009/3/9 16:02 ○
- くだすれPHP(超初心者用)3 (1001) - [97%] - 2008/6/8 6:35 ☆
- さっさとPHP5.0.6出せよ糞Zend (80) - [31%] - 2019/5/9 7:45
トップメニューへ / →のくす牧場書庫について