<!DOCTYPE HTML>
<html>
<head>
<title>Sign-In</title>
</head>
<body>
<form method="POST" action="home.php">
User: <br><input type="text" name="username" size="40"/><br />
Password: <br><input type="password" name="password" size="40"/><br />
<input type="submit" name="submit" value="Log-In" />
</form>
</body>
</html>
<?php
error_reporting(E_ALL);
if (isset($_POST['submit']))
{
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('cheapbooks');
echo "connected to DB";
$username = $_POST["username"];
$password = $_POST["password"];
$query = mysql_query("SELECT * FROM customer WHERE username='".$username."' AND password='".$password."' ");
$numrows = mysql_num_rows($query);
if($numrows!=0)
{
while($row = mysql_fetch_assoc($query))
{
$dbuser = $row['username'];
$dbpass = $row['password'];
}
if($username == $dbuser && $password == $dbpass)
{
session_start();
$_SESSION['sess_user']=$username;
echo "Logged in successfully";
//header("Location: home.php"); //Redirecting to home page after login
}
else
{
echo "Invalid username or password!";
}
}
else
{
echo "Failed........";
}
}
else
{
echo "NO Action!!!";
}
?>
我已编写此代码用于创建登录表单。当我在浏览器中打开表单时,它会显示&#34; No Action !!!!&#34;这是最后的陈述。我无法弄清楚错误,为什么它不检查是否(isset($ _ POST [&#39; submit&#39;]))
答案 0 :(得分:1)
当表单加载时,你必须将php部分分开,当表单尚未提交时检查isset($ _ POST [&#39; submit&#39;]),这样你就不会看到任何动作。 创建一个login.php文件并放入此代码
<!DOCTYPE HTML>
<html>
<head>
<title>Sign-In</title>
</head>
<body>
<form method="POST" action="home.php">
User: <br><input type="text" name="username" size="40"/><br />
Password: <br><input type="password" name="password" size="40"/><br />
<input type="submit" name="submit" value="Log-In" />
</form>
</body>
</html>
接下来在同一个文件夹中创建另一个名为home.php的文件并放入php代码
<?php
error_reporting(E_ALL);
if (isset($_POST['submit']))
{
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('cheapbooks');
echo "connected to DB";
$username = $_POST["username"];
$password = $_POST["password"];
$query = mysql_query("SELECT * FROM customer WHERE username='".$username."' AND password='".$password."' ");
$numrows = mysql_num_rows($query);
if($numrows!=0)
{
while($row = mysql_fetch_assoc($query))
{
$dbuser = $row['username'];
$dbpass = $row['password'];
}
if($username == $dbuser && $password == $dbpass)
{
session_start();
$_SESSION['sess_user']=$username;
echo "Logged in successfully";
//header("Location: home.php"); //Redirecting to home page after login
}
else
{
echo "Invalid username or password!";
}
}
else
{
echo "Failed........";
}
}
else
{
echo "NO Action!!!";
}
?>
当您打开login.php时,您将获得该表单,当您发布它时,它将重定向到home.php文件。你可以在home.php做任何你想做的事情。 另外,我建议您使用mysqli或PDO它们更安全。
答案 1 :(得分:0)
isset($_POST['submit'])
清楚地说,
此页面是否包含
$_POST
(包含&#39;提交键)或否?
如果答案是肯定的,则显示您的逻辑,否则显示"NO Action!!!"
部分。您应该知道,它始终会检查$_POST
的内容是否设置。而对于您正在查看的内容,页面的请求方法给出了。由于您要告诉该网页听取$_POST
方法以显示逻辑(而不是其中包含的内容),您的表达应该是
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['submit'])) {
/*ok*/
}else{
/*No action*/
}
现在说
此页面是否包含
$_POST
(包含&#39;提交&#39;密钥),请求方法是否为post?
和其他人一样,分离文件(我实际上是指目的)总是更好。