我正在尝试编写登录系统代码,但我遇到了登录问题:
当您加入网页时
../?p=Login
当您按下登录按钮时,您应该被发送到
../?p=index
但标题应为
../?a=loggedin
因为标准是
Includes/index.php
索引中的PHP代码:
if(isset($_GET['p'])) {
$p = htmlspecialchars($_GET['p']);
} else {
$p = "index";
}
include 'Includes/' . $p . ".php";
如果等于登录,则Includes/index.php
a
输出:
if(isset($_GET['a'])) {
if($_GET['a'] == "loggedin") {
echo('<div class="Password-true"> Du hast dich erfolgreich angemeldet.
</div>');
}
}
我认为问题可能出在登录代码中,但我不知道在哪里 问题是,我插入了所有代码:
<?php
if(isset($_POST['username'], $_POST['password'])) {
$username = htmlspecialchars($_POST['username']);
$password = password_hash(htmlspecialchars($_POST['password']),
PASSWORD_DEFAULT );
$login_statement = $pdo->prepare("SELECT * FROM user_users WHERE username
LIKE :username OR email LIKE :username");
$login_statement->bindParam("username", $username);
$login_statement->execute();
$user = $login_statement->fetch();
if($user != null) {
if(isset($_SESSION)) {
session_start();
}
$_SESSION['username'] = $user['username'];
header("Location: /?a=loggedin");
} else {
echo('<div class="login-false"> Benutzername und Passwort stimmen nicht
überein. </div>');
}
}
<div class="login">
<div class="login-header">
<h1>Login</h1>
<hr size="3" />
</div>
<div class="login-content">
<form method="post" action="/?p=Login">
<h3> Benutzername / E-Mail </h3>
<input type="text" class="datainput" name="username" style="height: 30px;
padding-left: 5px;" required placeholder="Nutzername oder E-Mail" /><br>
<br>
<h3> Passwort</h3>
<input type="password" class="datainput" name="password" style="height:
30px; padding-left: 5px;" required placeholder="Passwort" /><br><br><br>
<br><br>
<input type="submit" value="Login" style="height: 30px; width: 100px;" />
</form>
</div>
<div class="login-footer">
<hr size="3" />
Fülle alle Felder aus, um dich anzumelden.
</div>
</div>
最后我要补充一点,我使用a tutorial on YouTube并使用Bootstrap和jQuery。
我的网站是:http://mysticsouls.developed-media.de
(现在还不错)。
感谢您的帮助!
答案 0 :(得分:1)
听起来你想要这个用于网址: ?/ P =指数&安培; A =的loggedIn
然后你可以从这里获得$ _GET和p。否则,你能澄清一下吗?
答案 1 :(得分:1)
header()
将无效... aka 如果在执行此部分之前显示某些代码/ html。
另一种方法是回应一些JavaScript。既然你有jquery,我认为你可能会接受另一种选择;)
<script>window.location = '/?a=loggedin'</script>
据我所知,您的代码存在一些严重的安全问题。你应该首先使用本地副本,我甚至会禁用实时版本...现在......