Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP登录表单工作不正常_Php_Mysql_Database_Authentication_Login - Fatal编程技术网

PHP登录表单工作不正常

PHP登录表单工作不正常,php,mysql,database,authentication,login,Php,Mysql,Database,Authentication,Login,我试图创建一个简单的登录表单,每次我点击提交按钮,它就会转到其他页面,即使我的登录信息不正确。这是我的代码,有人能帮我解决这个问题吗?谢谢 login.php <?php session_start(); if(isset($_SESSION['username'])) { echo '<script type="text/javascript"> window.location="index2.php";</script>'; } if(isset($_POST

我试图创建一个简单的登录表单,每次我点击提交按钮,它就会转到其他页面,即使我的登录信息不正确。这是我的代码,有人能帮我解决这个问题吗?谢谢

login.php

<?php
session_start();
if(isset($_SESSION['username'])) {
echo '<script type="text/javascript"> window.location="index2.php";</script>';
}

if(isset($_POST['submit'])) {
include('connection.php');

$user = mysql_real_escape_string($_POST['username']);
$pass = md5($_POST['password']);
if($user && $pass) {
$sql="SELECT * FROM korisnici WHERE username = '" . $user . "' and password = '" . $pass . "'";
if (!$q=mysql_query($sql))
{
echo "<p>Error</p>" . mysql_query();
die();
}
if (mysql_num_rows($q)==0)
{
echo '<script type="text/javascript">alert("Username i password incorrect!");     window.location="login.php";</script>';
} 
else {
$_SESSION['username'] = $_POST['username'];

echo "<script language='javascript'>alert('everything works')</script>";
}
} else {
echo "<script language='javascript'>alert('Fill out both fields!')</script>";
}
}
?>

<head>
<?php require("connection.php") ?>
</head>
<body>
<div id="wrapper">  
<form action="login.php" method="POST">
Username: <input type="text" name="username">
Password:&nbsp <input type="password" name="password">
<input type="submit" id="submit" value="LOGIN" name="submit" class="button" />
</form>
</div>
</body>
</html>

正如您在问题中提到的,
index2.php
文件只包含一个示例HTML文本。您已将
action
属性设置到此文件,是什么原因导致此表单中的所有POST值都将发送到此脚本,因此这就是为什么即使数据不正确,也会在此文件上重定向

<form action="index2.php" method="POST">

应该是

<form action="" method="post">

我也会更改这一行

if (!$db=mysql_connect($mysql_server, $mysql_user, $mysql_password)) {
    die ("<p>Failed to connect</p>");
}

我还没有真正测试过这一点,但您可能正在用
将变量
$q
的查询结果“弄混”
不在这里,可能告诉php not
$q
等于您的。要测试此属性,请执行var_export($q)
,如果它为false,请将其与if语句分开

     $q=mysql_query($sql);
     if( $q ) ... etc.

我总是像上面所说的那样(在if中进行内联赋值),因为很明显,您正在赋值
$q
,然后对其进行测试。

显而易见的问题是,第一部分中的代码是否来自名为index2.php(而不是login.php)的页面,这是您发送表单的地方,根据表单的动作属性?我希望这是为了学习,是吗?@Fred ii-我相信一定是这样be@Mr.Smith吓人MD5,不寒而栗。是的,在我写了那个答案之后。好的,谢谢,我已经更改了那个,但现在它没有出现在那个页面上,现在它看起来与数据库的连接是错误的,因为当我输入数据库中存在的一个用户时,它表明我输入了错误的用户。@user37349不,它没有出现,因为您在成功时没有任何重定向,只是javascript警报/编辑此重定向在第一次登录时不起作用,只有在您刷新登录页面时才起作用。是的,但它会显示“我的用户名和密码不正确”的警报,而不是“一切正常”的警报是的,它只是不接受phpmyadmin中未添加md5的数据,我现在将更改它,再次感谢
if (!$db=mysql_connect($mysql_server, $mysql_user, $mysql_password)) {
    die ("<p>Failed to connect</p>");
}
if (false === ( $db = mysql_connect($mysql_server, $mysql_user, $mysql_password))) {
    die ("<p>Failed to connect</p>");
}
if (!$q=mysql_query($sql)){


}
if (false === ( $q = mysql_query($sql)) ){
  ...
     $q=mysql_query($sql);
     if( $q ) ... etc.