- 締切済み
PHPの会員登録システムのエラーについて
現在よくわるPHPの教科書という本を参考に、会員登録システムをつくっています。 しかし、本に書いてある内容をそのまま書いて実行してみてもエラーがでてきます。 そこでいろいろとネットで調べてみて以下のようなコードになりました。 <?php //$error = array('name'=>'', 'email'=>'', 'password'=>''); session_start(); if (!empty($_POST)) { if ($_POST['name'] === '') { $error['name'] = 'blank'; } if ($_POST['email'] === '') { $error['email'] = 'blank'; } if (strlen($_POST['password']) < 4) { $error['password'] = 'length'; } if ($_POST['password'] === '') { $error['password'] = 'blank'; } if (empty($error)) { $_SESSION['join'] = $_POST; header('Location: http:./check.php'); exit(); } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>会員登録</title> </head> <body> <form action="" method="POST"> ユーザーID<input type="text" name="name" value="<?php print isset($_POST['name']) ? htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'):"";?>" /> <?php if ($error['name'] === 'blank') { ?> <p class="error">*ユーザーIDを入力してください</p> <?php } ?> メールアドレス<input type="text" name="email" value="<?php print isset($_POST['email']) ? htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'):"";?>" /> <br> <?php if ($error['email'] === 'blank') { ?> <p class="error">*メールアドレスを入力してください</p> <?php } ?> パスワード<input type="password" name="password"> <br> <?php if ($error['password'] === 'blank') { ?> <p class="error">*パスワードを入力してください</p> <?php } ?> <?php if ($error['password'] === 'length') { ?> <p class="error">*パスワードは4文字以上で入力してください</p> <?php } ?> <input type="submit" value="登録"> </form> </body> </html> しかしこれでもエラーがでます。以下のエラー Warning: Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/****/www/join/index.php on line 39 Parse error: syntax error, unexpected ':' in /home/kazu94/www/join/index.php on line 39 誰かこのエラーの謎を解いてください お願いします(泣)
- みんなの回答 (1)
- 専門家の回答
みんなの回答
>> Warning: Unknown: It is not safe to rely on the system's timezone settings.You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/****/www/join/index.php on line 39 >> Parse error: syntax error, unexpected ':' in /home/kazu94/www/join/index.php on line 39 Warning と Parse Error が同時に発生することってあるんですかねぇ… Parse Error が発生するからそれを直したら Warning が発生するようになったように見えるのですが、違いますか? この Warning に関しては英語が読めれば質問しなくても分かる内容です。この程度の英語が読めずにプログラミングをしているとあとあと困ることも多いので、プログラミングの学習と並行して英語の学習も検討してください。以下に自分なりの意訳を掲載します。 警告: 不明なタイプのエラー: システムのタイムゾーン設定に依存するのは安全ではありません。 php.ini による date.timezone の設定もしくはdate_default_timezone_set関数による設定が "必須" です。(後略) php.ini に timezone をセット http://sfi.hamazo.tv/e1317196.html date_default_timezone_set http://php.net/manual/ja/function.date-default-timezone-set.php 東京は 'Asia/Tokyo' です。 【備考】 この入門書ですが、内容的にはかなり古く、Webセキュリティ専門家の方からもボロクソ指摘がある内容です。 もし『よくわかるPHPの教科書』の著者が徳丸浩の『安全なWebアプリケーションの作り方』を読んだら http://d.hatena.ne.jp/ockeghem/20110823/p1 難易度的に理解できるのであれば「パーフェクトPHP」等の方がはるかにオススメです。また、以下のまとめもご覧ください。 $_GET, $_POSTなどを受け取る際の処理 http://qiita.com/mpyw/items/2f9955db1c02eeef43ea PHPでデータベースに接続するときのまとめ http://qiita.com/mpyw/items/b00b72c5c95aac573b71
お礼
なるほど! ちゃんと解決できました! ご丁寧にありがとうございました!!