我已经间歇性地讨论了这个问题已经有一段时间了,但我只是反复发生这种问题,实际上很难拍摄它。它在FF中反复出现,但我也在Chrome中看过它。
我的登录表格如下,非常简单,电子邮件地址和密码以及提交按钮
<form method="post" action="login.php" id="valid" class="mainForm">
<fieldset>
<div class="">
<label for="req1">Email:</label>
<div class="loginInput"><input style="width: 100%;" type="text" name="email" class="validate" id="req1" /></div>
<div class="fix"></div>
</div>
<div class="">
<label for="req2">Password:</label>
<div class="loginInput"><input style="width: 100%;" type="password" name="password" class="validate" id="req2" /></div>
<div class="fix"></div>
</div>
<input name="action" type="hidden" value="log_in" />
<div class="">
<div class=""><input type="checkbox" id="check2" name="remember_me" value="1"/><label>Remember me</label></div>
<input type="submit" value="Log me in" class="submitForm" />
<div class="fix"></div>
</div>
</fieldset>
</form>
提交上述表单不会让我登录,它只是再次显示登录表单,就像没有提交任何内容一样。所以我修改了提交到的login.php
文件,并在最顶部添加了print_r($_POST);
当我再次提交表单时,显示的只是一个空数组。就像表格变量没有被发送一样。我尝试了几个帐户,每次都有一个空白数组。
然后我尝试输入一个我不在数据库中的新电子邮件地址,令我惊讶的是填充了假电子邮件和密码的$ _POST数组。然后我再次尝试了一个真实帐户,它是空白的。
我做的最后一件事是在FF中删除该网站的会话cookie,然后再试一次。令我惊讶的是,我可以登录确定。之后我几次登录和退出都没有问题!
所以我的问题是:那个会话cookie正在做什么来防止发送变量(如果那是实际发生的)以及为什么在我输入一个假电子邮件地址时填充$ _POST数组? print_r($_POST)
我做的是脚本中的第一件事,在进行任何其他处理或包含之前,它仍然是空的?
我想我真的不知道浏览器如何处理会话cookie,但这种行为让我完全无能为力。
有关如何解决此问题或一般会话建议的任何建议。
编辑 - login.php的PHP代码
<?php
print_r($_POST);
include '../inc/init.php';
$action = fRequest::get('action');
if ('log_out' == $action) {
fSession::destroy();
fAuthorization::destroyUserInfo();
fMessaging::create('success', '<center>You were successfully logged out</center>');
}
if (fAuthorization::checkAuthLevel('user') || fAuthorization::checkAuthLevel('buser')) {
fURL::redirect('index.php');
}
if ('log_in' == $action) {
# Set session variables etc...
}
顶部的init.php
包括数据库连接字符串并启动会话等...我正在使用包含会话类的FlourishLib Un-Framework类。
由于
答案 0 :(得分:0)
请尝试此代码
$actions = array('log_in', 'log_out');
$action = fRequest::getValid('action', $actions);
if ($action == 'log_out') {
fSession::clear();
fAuthorization::destroyUserInfo();
fMessaging::create('success', URL_ROOT . 'index.php', 'You were successfully logged out');
fURL::redirect(URL_ROOT . 'index.php');
}
if ($action == 'log_in') {
if (fRequest::isPost()) {
try {
$valid_login = fRequest::get('username') == 'yourlogin';
$valid_pass = md5(fRequest::get('password')) == 'md5(youpassword)';
if (!$valid_login || !$valid_pass) {
throw new fValidationException('The login or password entered is invalid');
}
fAuthorization::setUserToken(fRequest::get('username'));
fURL::redirect(fAuthorization::getRequestedURL(TRUE, URL_ROOT . 'index.php'));
} catch (fExpectedException $e) {
fMessaging::create('error', fURL::get(), $e->getMessage());
}
}
include VIEWS_DIR . DS . basename(__FILE__);
}