b1ackc0ffee2015/07/14 17:46はじめまして、こんばんは。 回答ありがとうございます。 printとechoの件、知りませんでした!新発見です。 ブラケットだと、そのまま文字を入れることができるのですね。 <?php try { $db = new PDO('mysql:host=localhost;dbname=newbbs;charset=utf8', 'newbbsuser', 'newbbspass'); $displayName = $db->prepare('SELECT name FROM newbbs WHERE mailaddress = {$_POST["username"]}'); $displayName->execute(); } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>NEW掲示板</title> </head> <body> <?php print('<a href="logout.php" target="_top">ログアウトする</a>'); print("こんにちは、"."$displayName"."さん。"); ?> <h3>ようこそNEW掲示板へ</h3> <form method="POST" action="guest_write.php" target="frame2"> <div id="container"> <label for="name">名前:<label> <input type="text" id="name" name="name" size="20" maxlength="30" /> </div> <div id="container"> <label for="body">本文:</label> <input type="text" id="body" name="body" size="70" maxlength="255" /> </div> <input type="submit" value="送信" /> </form> </body> </html> の書き方ですが、''と'の使い分けができていないのか、その他の部分が問題なのかわかりませんが、期待通りの結果が得られませんでした。''と'どちらも使用するとすると、どのような書き方が正しいでしょうか。
shiolier2015/07/14 18:07はじめまして。フォローまでしていただいて、ご丁寧にありがとうございます。 上のコードで「ここが間違っている」と断定はできませんが、気になる点が1つ。 $displayName = $db->prepare('SELECT name FROM newbbs WHERE mailaddress = {$_POST["username"]}'); この行のprepareの引数です。 ここは変数展開を行いたいであろう場所なので ' と " を逆にすると良いかと思います。 $displayName = $db->prepare("SELECT name FROM newbbs WHERE mailaddress = ${_POST['username']};"); 個人的にPHPの ' と " の使い分けは、変数展開やエスケープ(\n や \t)を利用する場合は " 、それ以外は全て ' を使っています。
ngyuki2015/07/15 00:40b1ackc0ffee さん コメントに書かれているコードには多くの誤りがあります。 - try の使い方に誤りがありシンタックスエラーになる - 変数展開されない箇所に変数を差し込んでいるため動作しない(↑で指摘の通り) - $displayName 変数の使い方に誤りがあり動作しない - html のマークアップに誤りがある(1個目の label の閉じタグ) これらを修正したとしても以下の脆弱性が存在します。 - SQL インジェクション脆弱性 - XSS 脆弱性 「"と'の使い分け」という問題を修正したとしても、このコードは動作しません。
b1ackc0ffee2015/07/15 08:04half_sleepingさま 夜分に有難うございました+。 指摘箇所を修正致しました^^ 使い分け方法わかりやすかったです! 今後ともよろしくお願い致します。
b1ackc0ffee2015/07/15 08:15 ngyukiさま いつもお世話になります。総合1位おめでとうございます★ - try の使い方に誤りがありシンタックスエラーになる try...catch苦手です。例外処理の部分は基本的と言われますが、まだまだ慣れていなくて><、 - html のマークアップに誤りがある(1個目の label の閉じタグ) - 変数展開されない箇所に変数を差し込んでいるため動作しない(↑で指摘の通り) 修正しました^^ - $displayName 変数の使い方に誤りがあり動作しない 変数、関数、ライブラリ、インスタンス化の理解ができていないせいか、 プログラムの流れ、きちんとした整理ができません。 難しいですね。皆さんどのように学んでこられたのでしょうか。 下記に修正後のコードを載せます↓ ――― <?php session_start(); if ($auth->getAuth()){ print($auth->name); $name = $auth->getAuthData("name"); print("こんにちは"); print("$name); print("さん"); } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>NEW掲示板</title> </head> <body> <?php echo('<a href="logout.php" target="_top">ログアウトする</a>'); echo("こんにちは、"."$displayName"."さん。"); echo htmlspecialchars(auth->getAuthData("name")); ?> <h3>ようこそNEW掲示板へ</h3> <form method="POST" action="guest_write.php" target="frame2"> <div id="container"> <label for="name">名前:</label> <input type="text" id="name" name="name" size="20" maxlength="30" /> </div> <div id="container"> <label for="body">本文:</label> <input type="text" id="body" name="body" size="70" maxlength="255" /> </div> <input type="submit" value="送信" /> </form> </body> </html> ――― - SQL インジェクション脆弱性 - XSS 脆弱性 セキュリティ関係も並行して身に着けないといけないでしょうか。 プログラムの勉強を始めてか月ですが、何からどう学べばいいかわかりません。 アドバイスいただき、助かります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/14 17:46
2015/07/14 18:07
2015/07/15 00:40
2015/07/15 08:04
2015/07/15 08:15