-2 php
我用它来比较输入的密码和确认密码.无论如何,它都会创造用户.为什么这样?
这是数据库代码 -
$connect = @mysql_connect ($host, $username, $password) or die ('error');
$select = @mysql_select_db($db_name, $connect) or die('check');
$username=stripslashes(trim($_POST['username']));
$select_record="select * from users where username=' ".$username."' ";
$select_query=mysql_query($select_record) or die (mysql_error());
if(mysql_num_rows($select_query)==0)
{
$fullname = stripslashes(trim($_POST['fullname']));
$email = stripslashes(trim($_POST['email']));
$website = stripslashes(trim($_POST['website']));
$username = stripslashes(trim($_POST['username']));
$password = stripslashes(trim($_POST['password']));
$add_new="insert into users (fullname,email,website,username,password) values ('$fullname','$email','$website','$username','$password')";
$add_query=mysql_query($add_new) or die(mysql_error());
if($add_query)
{
echo "Awesome! You are now a member";
}
}
else
echo "Please try again";
?>
Run Code Online (Sandbox Code Playgroud)
上面连接,我有我的数据库用户名和密码.
只是为了修改,这是我目前的代码 -
<div id="form"><form action="registersuccess.php" method="post">
Full Name<br />
<input type="text" name="fullname"/>
<br /><br />
Website<br />
<input type="text" name="site"/><br /><br />
Email<br />
<input type="text" name="email"/><br /><br />
Username<br />
<input type="text" maxlength="255" name="username"/><br />
<br />
Password<br />
<input type="password" name="password"/><br />
<br />
Confirm Password<br />
<input type="password" name="confirmpass"/><br />
<br />
<p class="submit"><input type="submit" value="Create my Account"/></p>
</form>
<?php
$pass = $_POST['password'];
$cpass = $_POST['confirmpass'];
$cmp = strcmp($pass, $cpass);
if ($cmp != 0)
{
echo "check password";
}
else
{
return true;
}
?>
Run Code Online (Sandbox Code Playgroud)
Bol*_*ock 10
这里有许多明显的语法.看来你甚至没有看到任何通知/警告(关于未定义的变量,未定义的常量等),所以你最好编辑php.ini打开错误报告(至少E_NOTICE左右),或者在开头的时候解决这个问题.你的脚本:
error_reporting(E_ALL);
Run Code Online (Sandbox Code Playgroud)
这将使语法"错误"(意味着它们不是实际的解析错误,但仍然是键入错误,这些错误被PHP识别为其他东西)更容易捕获,因为PHP将打印消息,告诉您是否存在任何与你的代码有关的东西,以及哪些文件/行.
现在讨论代码的实际问题.
您需要将结果分配给strcmp()变量,然后检查该变量.此外,您可以更改if条件,$cmp != 0因为您正在测试任何类型的不等式,即您正在测试is not 0.
$cmp = strcmp($pass, $cpass);
if ($cmp != 0)
...
Run Code Online (Sandbox Code Playgroud)
实际上,通过这样做,您可以完全绕过必须使用临时变量,并将函数调用的结果传递给条件语句:
if (strcmp($pass, $cpass) != 0)
Run Code Online (Sandbox Code Playgroud)
或者通过直接比较字符串而不是比较strcmp()结果:
if ($pass != $cpass)
Run Code Online (Sandbox Code Playgroud)
此外,正如其他人指出的那样,你的POST价值分配是错误的,它们应该是相反的,否则你就没有覆盖$_POST任何价值.您也可以删除( )数组键的括号,因为它们根本不需要:
$pass = $_POST['password'];
$cpass = $_POST['confirmpass'];
Run Code Online (Sandbox Code Playgroud)