2012-04-21 14 views
1

データベースにデータを保存する簡単なユーザー登録を作成しようとしています。 しかし、私は敗北することはできません。未定義のインデックス:Cでpass_conf:ブックの\ ライン27登録フォームに未定義のインデックスPHP

上reg.phpしかし、私のpass_config \ WAMP \ WWW \右のようです ITSはお知らせが

言います。

問題は何ですか?これは私のコードを更新/// PHPコード

で、この1つは

<?php 
$host = "localhost"; 
$dbuser = "root"; 
$dbpass = ""; 
$dbname = "pagination"; 

$connection = mysql_connect($host,$dbuser,$dbpass); 
$db = mysql_select_db($dbname,$connection); 
/* 
$name = $_POST["username"]; 
$pass = $_POST["password"]; 
$pass_conf = $_POST["pass_conf"]; 
$email = $_POST["email"]; 
$ip = $_POST["ip"]; */ 

$name = isset($_POST['username']) ? $_POST['username'] : 0; 
$pass = isset($_POST['password']) ? $_POST['password'] : 0; 
$pass_conf = isset($_POST["pass_conf"]) ? $_POST["pass_conf"] : 0; // 0 equals your default off value. 
$email = isset($_POST['email']) ? $_POST['email'] : 0; 
$ip = isset($_POST['ip']) ? $_POST['ip'] : 0; 

if($name == false || $pass == false || $pass_conf == false || $email == false){ 
echo "Please fill in all the required fields."; 
}; 
if($pass != $pass_conf){ 
echo "Passwords do not match."; 
}else { 
$connection = mysql_connect($host,$dbuser,$dbpass); 
$db = mysql_select_db($dbname,$connection); 
$sql = "INSERT INTO user (username,password,email,ip) VALUES ($name, $pass, $email, $ip)"; 
$result = mysql_query($sql); 
echo "Thank you for your registration to Our Site"; 
}; 

?> 

の作品、私はそれのための要求を得たので、私はまた私のform.phpを追加します。

+1

$ _POST ["pass_conf"]は実際に値を持っていますか? var_dump()を投稿できますか? – Bono

+0

このPHPスクリプトに提出するHTMLフォームを投稿できますか? – gimg1

+2

あなたのコードはSQLインジェクションの影響を受けやすいと警告します。 – Jasper

答えて

1

代わり$x = $_POST['x']使用$x = isset($_POST['x']) ? $_POST['x'], null

<?php 
$IP = $_SERVER['REMOTE_ADDR']; 
?> 

<form name=reg action=reg.php method=post> 

Username : <input type=text name=username><br> 

Password : <input type=password name=password><br> 

Confirm :<input type=password name=pass_conf><br> 

Email : <input type=text name=email><br> 

<input type=hidden name=ip value='<?php echo $IP ?>'> 
<input type=submit value='Register'> 
</form> 

感謝。

または使用:

function post($key, $default = null) { 
    return isset($_POST[$key]) ? $_POST[$key] : $default; 
} 
0

そのメッセージは、あなたが取得しようとしている値が配列中に存在しないことを意味します。したがって、値が入力されないか、正しく渡されない(フィールド名を確認してください。正確に同じでなければなりません)。

1

最初に、あなたのアプリの作成中にE_ALLを使用しています。あなたの "pass_conf"の値はおそらくあなたのフォームを送信するときに選択されていないチェックボックスなので、値は送られません。単純です:

$ pass_conf = isset($ _ POST ["pass_conf"])? $ _POST ["pass_conf"]:0; // 0はデフォルトのオフ値になります。

+0

それはあなたが再び同じパスワードを入力しなければならないパスワード入力です私にははるかに論理的なようです。 – Jasper

+0

チェックボックス入力を選択しないと、その入力名の周りには何も送信されず、パスワードと同じです。 – iLLin

0

は、あなたがしようとしたがいる:

if (array_key_exists("pass_conf", $_POST)) 
    $pass_conf = mysql_real_escape_string($_POST["pass_conf"]); 
else 
    $pass_conf = null; 

$sql = 
"INSERT INTO events (username, password, email, ip) " . 
"VALUES ('{$name}','{$pass}','{$email}','{$ip}')"; 

が、私は私の完全な例を求めていたこの質問を参照してください、それがユーザーdldnhで答えたかまでスクロールダウン。それはあなたのものに似ているので、おそらくそれはあなたを助けるでしょう:[link] Undefined index notice

関連する問題