Php 登录表单未进行身份验证
我已经为我的网站创建了一个登录表单,但目前它不起作用,我被引导到invalid.php,这表明我的身份验证失败Php 登录表单未进行身份验证,php,html,forms,Php,Html,Forms,我已经为我的网站创建了一个登录表单,但目前它不起作用,我被引导到invalid.php,这表明我的身份验证失败 <?php session_start(); include("scripts/dbconnect.php"); $numrows=0; $password=$_POST['password']; $email=$_POST['email']; $query="select fname,lname,email from
<?php
session_start();
include("scripts/dbconnect.php");
$numrows=0;
$password=$_POST['password'];
$email=$_POST['email'];
$query="select fname,lname,email from mayan_users where (password='$password' && email='$email')";
$link = mysql_query($query);
if (!$link) {
die('login error');
}
$numrows=mysql_num_rows($link);
if ($numrows>0){ // authentication is successfull
$row = mysql_fetch_array($link, MYSQL_ASSOC);
$_SESSION['user']['fname']=$row['fname'];
$_SESSION['user']['lname']=$row['lname'];
$_SESSION['user']['email']=$row['email'];
header("location:../index2.php");
} else {
header("location:../invalid.php"); // authentication was unsuccessfull
}
?>
您没有表单标记。请像这样添加它们
<form method="POST" action="">
<!-- INSERT INPUTS HERE -->
</form>
您没有表单标记。请像这样添加它们
<form method="POST" action="">
<!-- INSERT INPUTS HERE -->
</form>
如果您没有通过其他方法提交,您的登录可能需要包装在表单标签中
(谢谢njk!)如果您没有通过其他方法提交,您的登录可能需要包装在表单标签中
(谢谢njk!)试试这个:
<form id="Loginform" style="background-color:fuchsia; width:100%">
<span id="logspan">
<input type="email" name="email" id="email" placeholder="Email" required />
<input type="password" name="password" id="password" placeholder="Password" required/>
<input type="button" name="submit" style="cursor:pointer" id="submit" value="Log In" onclick="logMeIn()" />
</span>
</form>
试试这个:
<form id="Loginform" style="background-color:fuchsia; width:100%">
<span id="logspan">
<input type="email" name="email" id="email" placeholder="Email" required />
<input type="password" name="password" id="password" placeholder="Password" required/>
<input type="button" name="submit" style="cursor:pointer" id="submit" value="Log In" onclick="logMeIn()" />
</span>
</form>
首先,如果您的PHP版本支持PDO,我建议您使用它。
然后我假设javascript函数以正确的方式发送参数。
最后,可以避免检查行数。简单地
if($row = mysql_fetch_array($link))
{
...
}
else
{
header("location: ../invalid.php");
exit; //It's a good practice
}
首先,如果您的PHP版本支持PDO,我建议您使用它。
然后我假设javascript函数以正确的方式发送参数。
最后,可以避免检查行数。简单地
if($row = mysql_fetch_array($link))
{
...
}
else
{
header("location: ../invalid.php");
exit; //It's a good practice
}
如果我为电子邮件字段输入了”)DROP TABLE mayan_users
,该怎么办。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,为了您的利益或您的用户,请不要在数据库中以明文形式存储密码。储存前先用盐把它们炸开。(特别是因为这容易受到SQL注入的影响)@Bondye OP可能使用了w3schools的教程……我现在正在大学学习,这是我第一次做这样的事情,所以很明显,一切都不会完美。“我怎么也能接受答案呢?”邦迪用否定的方式回答有什么意义?他说这是他第一次。你说“这个密码太糟糕了”。不是建设性的。如果我为电子邮件字段输入”)删除表mayan_用户
。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,为了您的利益或您的用户,请不要在数据库中以明文形式存储密码。储存前先用盐把它们炸开。(特别是因为这容易受到SQL注入的影响)@Bondye OP可能使用了w3schools的教程……我现在正在大学学习,这是我第一次做这样的事情,所以很明显,一切都不会完美。“我怎么也能接受答案呢?”邦迪用否定的方式回答有什么意义?他说这是他第一次。你说“这个密码太糟糕了”。不具建设性。如果他在同一个文档中发布,则不需要采取行动。我不确定(在所有浏览器中…)将其删除会产生什么影响,但正式要求:我的不好,谢谢官方文档。显然我错了!!如果他发布到同一个文档中,那么就不需要采取行动。我不确定(在所有浏览器中…)删除它的效果如何,但正式要求:我的错,谢谢你的正式文档。显然我错了!!