我有 index.php 页面,用户可以在其中登录。问题是虽然密码和用户名是正确的,但我无法登录。我做错了什么?
PHP代码:
$v = $db->prepare("select * from uyeler where uye_ad=? and uye_sifre=?");
if ($_POST) {
$isim =isset( $_POST["isim"]);
$sifre= isset($_POST["sifre"]);
$v->execute(array($isim,$sifre));
$x = $v->fetch(PDO::FETCH_ASSOC);
$d=$v->rowCount();
if($d) {
echo "Giriş Yapıldı";
} else {
echo "sdds";
}
}
HTML code:
<form action="" method="post">
<table cellpadding="5" cellspacing="5">
<tr>
<td>Uye Ad</td>
<td><input type="text" name="isim"></td>
</tr>
<tr>
<td>Şifre</td>
<td><input type="text" name="sifre"></td>
</tr>
<tr>
<td><input type="submit"></td>
</tr>
</table>
</form>
答案 0 :(得分:2)
好的,我可以从代码中看到,我可以说你是PHP的新手,我不专业,但我可以给你一些帮助。
您的代码存在很多问题,但我要提一句:
现在我编辑了代码并添加了一些东西以使其更好,但尚未测试它但是如果id不能与你合作我会的。
完整代码:
<?php
//connect to the database first
if (isset($_POST['submit']))
{
$isim = $_POST['username'];
$sifre= $_POST['password'];
$v = $db->prepare("SELECT * FROM uyeler where uye_ad=?");
$v->execute(array($isim));
$FetchUserPassword = $v->FETCH(PDO::FETCH_ASSOC);
if (!empty($FetchUserPassword))
{
$password = $FetchUserPassword['uye_sifre']; // Save the fetched password inside variable
if( $sifre == $password )
{
echo "login done";
}
else
{
echo "Password is wrong";
}
}
else
{
echo "Username is not exist";
}
}
?>
<form action="" method="post">
<table cellpadding="5" cellspacing="5">
<tr>
<td>username</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>password</td>
<td><input type="text" name="password"></td>
</tr>
<tr>
<td><input type="submit" name="submit"></td>
</tr>
</table>
</form>
我会稍微添加一些内容(纪录片内容),这样它可以在将来帮助你。
重要说明创建“登录”页面时,代码结构应符合用户的用法:我的意思是什么?
你有一个很多人使用的登录页面,每个人都应该有用户名,在你的代码中你搜索的用户取决于他的用户名,但问题是你有很多用户认为它们可能具有相同的用户名,现在您将遇到一个大问题,因为查询将返回多行。
如何解决此问题有两种方法:
第三,也是最后一件事:
答案 1 :(得分:0)
您将行计数存储在$ d变量中。如果未找到匹配项,它将始终为零;如果在数据库表中找到数据,则大于零。 修改你的if条件:
if( isset($d) && $d != 0 ){
echo "Giriş Yapıldı";
}else {
echo "sdds";
}