无法让PHP登录正常工作,以前可以正常工作,但稍有改动
我做了一个工作完美的登录,但现在我复制和编辑它的原始工作在我的另一个网页项目和它的jsut dosnt接缝想要工作,任何帮助将不胜感激 以下是有效的登录名:无法让PHP登录正常工作,以前可以正常工作,但稍有改动,php,mysql,forms,login,pdo,Php,Mysql,Forms,Login,Pdo,我做了一个工作完美的登录,但现在我复制和编辑它的原始工作在我的另一个网页项目和它的jsut dosnt接缝想要工作,任何帮助将不胜感激 以下是有效的登录名: <?php session_start(); include('../includes/connect-db.php'); if (isset($_SESSION['logged_in'])) { ?> <html> <head> </head> <bod
<?php
session_start();
include('../includes/connect-db.php');
if (isset($_SESSION['logged_in'])) {
?>
<html>
<head>
</head>
<body>
<div>Message would go here</div>
</body>
</html>
<?php
} else {
if (isset($_POST['username'], $_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) or empty($password)) {
$error = 'All fields are required!';
} else {
$query = $pdo->prepare('SELECT * FROM users WHERE user_username = ? AND user_password = ?');
$query->bindValue(1, $username);
$query->bindValue(2, $password);
$query->execute();
$num = $query->rowCount();
if ($num == 1) {
$_SESSION['logged_in'] = true;
header('Location: index.php');
exit();
} else {
$error = 'Incorrect details!';
}
}
}
?>
<html>
<head>
</head>
<body>
<div>Login form would go here</div>
</body>
</html>
<?php } ?>
在主题中,我想要我拥有的内容:
<?php echo($content); ?>
在登录php文件中,我将把它放入php主题文件中:
$content = '<form action="index.php" method="post" autocomplete="off">
<input type="text" name="username" placeholder="Username" />
<input type="password" name="password" placeholder="Password" />
<input type="submit" value="Submit" />
</form>
<?php if (isset($error)) { ?>
<small style="color:#aa0000"><?php echo($error); ?></small>
<?php } ?>';
$content='1!'
';
我希望有人能帮忙,希望我错过了一些小东西
谢谢你的帮助,如果还需要什么,请告诉我
亲切问候,,
海登。尝试更换
$num = $query->rowCount();
与
更新
刚刚注意到这个
if (isset($_POST['username'], $_POST['password'])) {
应该是
if( isset($_POST['username']) && isset($_POST['password']) ) {
我想在这里添加一个else条件来显示某个描述的错误消息
更新2
对connect.php稍加修改
try {
// create a new instance of a PDO connection
$pdo = new PDO('mysql:host=localhost;dbname=techbite', 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
// if the connection fails, display an error message
echo 'ERROR: ' . $e->getMessage();
}
它没有显示错误,因为
$content = '<form action="index.php" method="post" autocomplete="off">
<input type="text" name="username" placeholder="Username" />
<input type="password" name="password" placeholder="Password" />
<input type="submit" value="Submit" /> </form>
<?php if (isset($error)) { ?>
<small style="color:#aa0000"><?php echo($error); ?></small>
<?php } ?>';
$content='1!'
';
都只是一个字符串,php解释器永远不会解析该字符串中的
部分。查看登录页面的页面源代码,您应该可以在那里看到它们
如果设置使用此$content变量和theme-select.php文件,请尝试将其更改为:
$content = '<form action="index.php" method="post" autocomplete="off">
<input type="text" name="username" placeholder="Username" />
<input type="password" name="password" placeholder="Password" />
<input type="submit" value="Submit" /> </form>';
if (isset($error)) {
$content .= '<small style="color:#aa0000">'.$error.'</small>';
}
$content='1!'
';
如果(isset($error)){
$content.=''.$error';
}
至于它为什么不登录,这是一个愚蠢的问题,但是你是否在数据库中创建了一个名为admins的表以及一个设置了用户名和密码的记录?我修复了它!
我知道它是如此的小和简单,是表单操作被设置为错误的文件名,它被设置为index.php而不是login.php
谢谢大家的帮助!:) 请注意:您真的在数据库中以明文形式存储管理员密码吗?这不是一个好的做法!只要在谷歌上搜索“为什么不用纯文本存储密码”,你就会发现很多原因。在您可以找到您应该如何做:-)嗨,DaveG,是的,我知道数据库中的密码,因为这是本地的,在一个WAMP服务器上,我只是用它来让它工作,当它在我的托管服务器上时,我会使它安全,但感谢您的提醒!)这是编程而不是绗缝…嗨,Adrock,谢谢你的回答,我尝试过替换它,但它仍然在做同样的事情,但是,有什么想法吗?除了我的更新,如果你只运行代码来查询数据库,那行得通吗?嗯,没有,它不起作用或提供任何数据!我刚刚试着将我的登录名中的所有代码复制到这个web项目中(并更改了目录名和数据库表名以使用这个项目),dosnt seam也可以,我确信它的连接很好,但是以防万一,这里是数据库连接:Iv将其添加到主要问题:)我在数据库连接中添加了一部分以捕获错误Hi Luke,这是可以理解的,但是当我将其作为html表单而不是字符串进行测试时,我得到了相同的结果,没有错误,没有登录。您是否看到$content=''中包含php的
;我确实看到了php标记,但是在标准html表单中没有php标记。正如我所说,我不能提供关于标准html表单的建议,因为您还没有编写代码。如果您在html源代码中看到php标记,它们不会被解释,这就是为什么您当前没有看到登录错误。你试过修理吗?“无登录”部分是一个单独的错误,您是否检查过admins表是否存在?表单与$content=''中的内容完全相同代码>所以它应该是
if( isset($_POST['username']) && isset($_POST['password']) ) {
try {
// create a new instance of a PDO connection
$pdo = new PDO('mysql:host=localhost;dbname=techbite', 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
// if the connection fails, display an error message
echo 'ERROR: ' . $e->getMessage();
}
$content = '<form action="index.php" method="post" autocomplete="off">
<input type="text" name="username" placeholder="Username" />
<input type="password" name="password" placeholder="Password" />
<input type="submit" value="Submit" /> </form>
<?php if (isset($error)) { ?>
<small style="color:#aa0000"><?php echo($error); ?></small>
<?php } ?>';
$content = '<form action="index.php" method="post" autocomplete="off">
<input type="text" name="username" placeholder="Username" />
<input type="password" name="password" placeholder="Password" />
<input type="submit" value="Submit" /> </form>';
if (isset($error)) {
$content .= '<small style="color:#aa0000">'.$error.'</small>';
}