这是我的注册部分代码。
<?php
include_once('config.php');
$uname=mysql_real_escape_string($_POST["fname"]);
$email = mysql_real_escape_string( $_POST["email"] );
$phone=mysql_real_escape_string($_POST["phone"]);
$country = mysql_real_escape_string( $_POST["country"] );
$region = mysql_real_escape_string( $_POST["region"] );
$zip = mysql_real_escape_string($_POST["zip"]) ;
$upass = mysql_real_escape_string( md5($_POST["password"]) );
if( empty($uname) || empty($email) || empty($phone) || empty($country) || empty($region) || empty($zip) || empty($upass) )
{
echo "all fields are mandatory - from PHP!";
exit();
}
$res = mysql_query("SELECT email FROM registration WHERE email='$email'");
$row = mysql_num_rows($res);
if( $row > 0 ){
echo "email $email has already been taken";
}
else
{
$sql = mysql_query("INSERT INTO registration (fname,email,phone,country,region,zip,password)VALUES(
'$uname',
' $email',
'$phone',
'$country',
'$region',
'$zip',
'$upass' )");
if($sql){
echo "Inserted Successfully";
}
else
echo "Insertion Failed";
}
?>
这是我登录php的代码....
<?php
session_start();
include_once('config.php');
$email = mysql_real_escape_string( $_POST["email"] );
$password = mysql_real_escape_string( md5($_POST["password"]) );
if( empty($email) || empty($password) ){
echo "Email and Password Mandatory ";
}
else
{
$sql = mysql_query("SELECT fname FROM registration WHERE(
email='$email'
AND
password='$password')");
while($row = mysql_fetch_array($sql)){
$_SESSION['user_name'] = $row['fname'];
}
//$res = mysql_query($sql);
//$row = mysql_fetch_array($res);
if( $_SESSION['user_name']!= '' )
echo "<script>location.href='../index.php?con=1'</script>";
else
echo "Failed To Login";
}
?>
登录后出现错误......
注意:未定义的索引:第21行的C:\ xampp \ htdocs \ cinderella \ php \ login.php中的user_name 登录失败//
**这个问题的任何领导都非常明显......谢谢**
答案 0 :(得分:2)
检查您的插入查询,$email
字段中有一个空格。
$sql = mysql_query("INSERT INTO registration (fname,email,phone,country,region,zip,password)VALUES(
'$uname',
WHITESPACE ------> ' $email',
'$phone',
'$country',`
答案 1 :(得分:1)
在INSERT查询中删除电子邮件前的空格。
其次,我建议您在获取之前使用num_rows来检查用户帐户是否存在。尝试:
if(mysql_num_rows($sql) == 0) echo "Failed to login!";
else {
$fetch = mysql_fetch_array($sql);
$_SESSION['user_name'] = $fetch['fname'];
}
另外我建议你使用MySQLi。您可以对此OO进行编程,以便更好地了解它。您还可以使用预准备语句,交易......
答案 2 :(得分:0)
如果$_SESSION['user_name']
中不存在该数组键,则$_SESSION
的测试将产生该通知(例如,当您尚未登录时)。尝试更改:
if( $_SESSION['user_name']!= '' )
到
if (array_key_exists('user_name', $_SESSION))
答案 3 :(得分:0)
你的整个代码已经完成了。
在mysql_real_escape_string
上执行md5($_POST["password"])
。如果你倒了就好多了。
使用已被删除的mysql查询。应该使用mysqli
为要插入的变量分配值。可以检查isset($_POST['username']) && !empty($_POST['username'])
并且,正如其他几个人所提到的那样,'$ email'中有一个空格