这是我注册部分的代码。
<?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:\examplep\htdocs\cinderella\php\login.php中的未定义索引:user_name登录失败//
**这个问题的任何线索都是非常可观的。。。谢谢**
检查插入查询,$email
字段中有一个空白。
$sql = mysql_query("INSERT INTO registration (fname,email,phone,country,region,zip,password)VALUES(
'$uname',
WHITESPACE ------> ' $email',
'$phone',
'$country',`
在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进行编程,这样你就可以更好地了解它。你也可以使用准备好的语句、事务。。。
如果$_SESSION
中不存在该数组键(例如,当您尚未登录时),则$_SESSION['user_name']
的测试将产生该通知。尝试更改:
if( $_SESSION['user_name']!= '' )
至
if (array_key_exists('user_name', $_SESSION))
您的整个代码都是完整的。
在CCD_ 5上执行CCD_。如果你做倒立会好得多。
使用已删除的mysql查询。应该使用mysqli
将值分配给要插入的变量并进行检查。本可以检查isset($_POST['username']) && !empty($_POST['username'])
并且,正如其他少数人所提到的,已经在"$email"中有一个空格