1

我试图创建一个简单的用户注册,将数据保存到数据库中。但我有一个我无法战胜的错误。它说

注意:未定义的索引:第 27 行 C:\wamp\www\book\reg.php 中的 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 是如何回答的;它与您的相似,因此也许会对您有所帮助:[链接]未定义索引通知

于 2012-04-21T15:20:40.183 回答