注册表单PHP中的未定义索引

时间:2012-04-21 15:03:08

标签: php sql

我尝试创建一个简单的用户注册,将数据保存到数据库中。 但我有一个错误,我不能失败。 它说

  

注意:未定义的索引:C:\ wamp \ www \ book \ reg.php中的pass_conf   第27行

但我的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 个答案:

答案 0 :(得分:1)

而不是$x = $_POST['x']使用$x = isset($_POST['x']) ? $_POST['x'], null

或使用:

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

答案 1 :(得分:1)

首先,在创建应用程序时使用E_ALL做得很好!您的“pass_conf”值可能是提交表单时未选中的复选框,因此不会发送任何值。一个简单的:

$ pass_conf = isset($ _ POST [“pass_conf”])? $ _POST [“pass_conf”]:0; // 0等于你的默认关闭值。

答案 2 :(得分:0)

该消息表示您尝试获取的值不在数组中。因此要么没有填写值,要么没有正确传递(检查字段名称,它必须完全相同)。

答案 3 :(得分: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