我正在尝试创建登录和注销系统。一切正常,直到我尝试发送隐藏值(最后)注销。用户将提交"隐藏价值"退出"但似乎价值没有发送。我尝试已经有不同的方法解决这个问题,但要么我总是收到错误消息(但代码有效)或者我没有收到错误消息,但它不起作用。
<section>
<h2>Zaloguj się do systemu</h2>
<?php
//$username;
//$password;
if(empty($_SESSION['userpass']) && empty($_POST['pass'])){
//create a log in form if no one is log in
echo "
<form method='post' action='./indexLogin.php'>
<table>
<tr>
<td>Urzytkownik:</td>
<td><input type='text' name='name'/></td>
</tr>
<tr>
<td>Hasło:</td>
<td><input type='password' name='pass'/></td>
</tr>
</table>
<input type='submit' value='Wyślij'>
</form>
"; //end of echo
}
else if(empty($_SESSION['userpass']) && !empty($_POST['pass'])){
//echo the user name and his password
$userName = $_POST['name'];
$password = $_POST['pass'];
echo "Nastąpiło poprawne zalogowanie do systemu";
//save user password to session
$_SESSION['username'] = $userName;
$_SESSION['userpass'] = $password;
}
//problem starts here
else{
if($_POST['logout'] == true){
session_destroy();
echo "Nastąpiło poprawne wylogowanie z systemu";
}
else{
echo "Jesteś zalogowany jako: ".$_SESSION['username'];
echo "
<form method='post' action='./indexLogin.php'>
Do you want to log out?<br/>
<input type='hidden' name='logout' value='true'>
<input type='submit' value='Wyloguj'>
</form>
";
}
}
?>
当我使用此代码时,我没有收到任何错误消息,但它不起作用
//problem starts here
else{
if(!empty($_POST['pass'])){
//confirmation that log out was successful
//$_POST['logout'];
session_destroy();
echo "Nastąpiło poprawne wylogowanie z systemu";
}
else{
//form to log out
echo "Jesteś zalogowany jako: ".$_SESSION['username'];
echo "
<form method='post' action='./indexLogin.php'>
Czy chesz się wylogować?<br/>
<input type='hidden' name='logout' value='1'>
<input type='submit' value='Wyloguj'>
</form>
";
}
}
我所做的是我用post
替换了get
方法。而我发现,即使价值在网址中,它仍然无效!我似乎从未收到任何价值,因此它使用了最后一个else
。
答案 0 :(得分:1)
实际上您的代码似乎有效,但您应该使用
启用会话 session_start();
在您的代码之前。然后我就可以提交登录凭据并注销。
干杯,
答案 1 :(得分:1)
要检查的第一件事是你实际上有PHP&gt; = 4.1。在较旧的PHP $ _GET和$ _POST中不存在。
要检查的第二件事实际上是你的$ _REQUEST的print_r内容(它是$ _GET和$ _POST以及$ _COOKIE的组合),看看是否有一些数据实际上是你的脚本。
第三:我已经在我的主机上执行了你的脚本并最终进入了#34;否则如果&#34;科。显然,您的脚本没有问题,但主机处理请求的方式存在问题。你是共享主机吗?一些共享主机有意断开关闭超级全局,然后你需要使用$ GLOBALS [&#34; _POST&#34;]而不是$ _POST
当然使用session_start()