1

データをデータベースに保存する単純なユーザー登録を作成しようとしています。しかし、私には打ち負かすことができないエラーがあります。その言う

注意: 未定義のインデックス: C:\wamp\www\book\reg.php の 27 行目の pass_conf

しかし、私の pass_config は正しいようです。

問題は何ですか?これはphpコードです

/// コードを更新すると、これが機能します

    <?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も追加します。

<?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>

ありがとう

4

4 に答える 4

1

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

または使用:

function post($key, $default = null) {
   return isset($_POST[$key]) ? $_POST[$key] : $default;
}
于 2012-04-21T15:07:49.973 に答える
1

まず、アプリの作成中に E_ALL を使用することに成功しました。「pass_conf」の値は、おそらくフォームを送信するときに選択されていないチェックボックスであるため、値は送信されません。シンプルな:

$pass_conf = isset($_POST["pass_conf"]) ? $_POST["pass_conf"]: 0; // 0 はデフォルトのオフ値です。

于 2012-04-21T15:09:40.627 に答える
0

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

于 2012-04-21T15:09:30.487 に答える
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

于 2012-04-21T15:20:40.183 に答える