好的,我在我的登录系统中遇到了这个错误,它说"错误的用户名或密码"当我打开login.php页面时。
而且我想知道如何制作它,以便仅在我点击登录按钮时检查我的用户名和密码,而不是在我加载页面时
我的按钮是<input>
,我尝试添加onclick="checklogin()"
,这是checklogin函数:
$username=$_POST['username'];
$password=$_POST['password'];
function checklogin()
{
$sql="SELECT * FROM `users` WHERE `username`='". $username ."' and `password`='". md5($password) ."'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
session_register("username");
session_register("password");
header("location:login_success.php");
}else{
echo "Wrong username or password.";
}
}
但没有任何反应......即使我得到密码/名称,即使我弄错了,页面也会刷新...但是当我删除&#34;功能checklogin()&#34; (它的内容仍然存在,只是删除了功能标签)和onclick属性它将起作用,但正如我在开头说的那样,它会说&#34;错误的密码或用户名&#34;当我刚加载页面时
所以为了缩短这一点,我该如何制作它,以便只有当用户点击按钮(<input type="submit" name="submit" value="login"/>
)时才会应用此登录检查
答案 0 :(得分:0)
使用isset
if(isset($_POST['submit'])){
$username=$_POST['username'];
$password=$_POST['password'];
}
答案 1 :(得分:0)
检查$ _POST数组是否包含数据:
function checklogin()
{
if(isset($_POST['submit']) && !empty($_POST['submit'])) {
$username=$_POST['username'];
$password=$_POST['password'];
$sql="SELECT * FROM `users` WHERE `username`='". $username ."' and `password`='". md5($password) ."'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
session_register("username");
session_register("password");
header("location:login_success.php");
}else{
echo "Wrong username or password.";
}
}
}
答案 2 :(得分:0)
这里有两个问题:
首先,功能checklogin无法达到$ password和$ username,因为它创建新范围,你可以使用global:
function checklogin() {
global $password;
global $username;
// ...
虽然我不建议......
onClick事件是针对JavaScript的,你不能使用JavaScript中的PHP函数。
你需要在这里使用AJAX,从PHP获取数据然后更新。