4 に答える
Before you extract values from $_POST
, you should check if they exist. You could use the isset
function for this (http://php.net/manual/en/function.isset.php)
設定されていない投稿変数を読み込もうとしているため、エラーが発生しています。それらはフォーム送信時にのみ設定されます。PHPコードを下部にラップします
if ($_SERVER['REQUEST_METHOD'] === 'POST') { ... }
また、コードは SQL インジェクションに適しています。少なくともmysql_real_escape_string
、ポスト変数を SQL クエリで使用する前に使用してください。mysql_real_escape_string
本番サイトには十分ではありませんが、クラスで余分なポイントを獲得できるはずです。
まず、
mysql_connect() に $ を付けてはなりません。これは変数ではなく、定義済みの関数です。$ を削除して、データベースに正しく接続します。
このドキュメントの先頭に XML タグがあるのはなぜですか? これは HTML/PHP です。HTML doctype で十分です。
215 行目から、次のように更新します。
if (isset($_POST)) {
$Name = $_POST['Name'];
$Surname = $_POST['Surname'];
$Username = $_POST['Username'];
$Email = $_POST['Email'];
$C_Email = $_POST['C_Email'];
$Password = $_POST['password'];
$C_Password = $_POST['c_password'];
$SecQ = $_POST['SecQ'];
$SecA = $_POST['SecA'];
}
POST 変数はフォームから来ており、それらが存在するかどうかを確認する必要があります。存在しない場合、PHP は NOTICE エラーを返します。これらの通知を無効にするには、error_reporting(0); を配置します。文書の上部にあります。開発目的のために、これらを表示しておくことをお勧めします。
フォームが送信されたという条件の下でのみ、データベースと対話 (挿入、チェック) する必要があります。そうしないと、PHP はユーザーからの入力なしでこれらすべての操作を実行します。次のように IF ステートメントを使用するのが最善です。
if (isset($_POST['submit']) {
// blah blah
// check if user exists, check if fields are blank
// insert the user if all of this stuff checks out..
} else {
// just display the form
}
素晴らしいフォームのチュートリアル: http://php.about.com/od/learnphp/ss/php_forms.htm
このページをどのように読み込んでいますか? POSTでロードするものはありますか?そうでない場合、 $name = $_POST['Name']; 割り当てには、POST の「名前」がありません。