こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

誰かこのエラーの謎を解いてください
お願いします(泣)

投稿日時 - 2014-01-12 00:14:46

QNo.8425690

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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

投稿日時 - 2014-01-12 00:53:26

お礼

なるほど!
ちゃんと解決できました!
ご丁寧にありがとうございました!!

投稿日時 - 2014-01-12 01:27:20

あなたにオススメの質問