我知道这里有很多问题都有相同的标题和问题,但我检查了所有的语法,我真的不知道为什么它不再起作用(前一段时间,它确实有效)。
<?php
include_once("../../database/db_connect.php");
include '../../chromephp-master/ChromePhp.php';
date_default_timezone_set('Europe/Amsterdam');
session_start();
ChromePhp::log('Start...');
if(!isset($_SESSION['username']) && !isset($_SESSION['password'])) {
ChromePhp::log('Nothing in the SESSION.');
if(isset($_POST['submit'])){
ChromePhp::log('Lets have a look at the data...');
(...)
ChromePhp::log('Login successful!');
header('Location: news.php');
} else {
ChromePhp::log('Empty form.');
}
} else {
header('Location: news.php');
}
?>
我的表格如下:
<form method="post" action="site/users/login" >
<input type="text" name="username" value="Gebruikersnaam" /><br /><br />
<input type="password" name="pwrd" value="Wachtwoord" /><br /><br />
<input type="submit" name="submit" value=" Log in " />
</form>
表单与PHP代码在同一页面上;我将操作指向“site / users / login”,因为在HTML页面的头部,我设置了<base href="../../">
。
当我提交表单时,页面重新加载,日志显示“开始...”,然后“会话中没有任何内容”。最后是“空表”。
我做错了什么?感谢所有帮助!
编辑:这是我的htaccess文件的内容:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
答案 0 :(得分:1)
我认为它对您有用,因为您已登录($_SESSION['username']
和$_SESSION['password']
已填写)。
因此,请使用$_POST
中的数据来登录用户($_POST['username']
和$_POST['pwrd']
)。
答案 1 :(得分:1)
发布的数据没有到达您的PHP页面有几种可能的原因。
可能是 .htaccess 文件具有负责此效果的规则。但是在问题中发表内容后,很明显情况并非如此。
另一个可能是脚本向(最终)同一页面发送重定向,从而丢失了发布的数据。一旦你在评论中提到你注意到浏览器在提交后立即重新加载页面,很明显这是寻找的候选原因。
重定向通常使用这种代码完成:
header("location: some-URL");
...当然,当参数包含自引用时,如下所示:
header('Location: '.$_SERVER['PHP_SELF']);
您发布的代码不包含此类声明,至少没有解释行为的声明,但有一些包含的脚本:
../../database/db_connect.php
../../chromephp-master/ChromePhp.php
还有一些点...
,我们不知道会发生什么(包括也可能在那里)。
如果这些部件中的任何部件执行这样的重定向,则可能是问题的原因。我们可以忽略 ChromePhp ,这是一个公开的库,但不会这样做。
因此,至少 db_connect.php 以及所有其他包含的文件(直接或通过其他包含的文件)都应扫描重定向的代码。
如果找到这样的重定向,请检查保留该代码是否合理 - 因为并非所有重定向都是错误的。但是当然应该分析自我重定向:它们是否真的有必要,因为知道任何发布的数据都会被忽略?
所以用更合适的代码替换导致header()
语句,你的问题应该解决。
作为旁注:最好不要将HTML实体放在HTML元素的 value 属性中,就像你在这里一样:
<input type="submit" name="submit" value=" Log in " />
如果您需要间距,只需输入普通空格:
<input type="submit" name="submit" value=" Log in " />
答案 2 :(得分:0)
你在'site / users / login'之后忘了'.php'。
我已经在更简单的版本中尝试了您的代码并取得了成功。像这样的代码:
<?php
if( isset($_POST['submit']) ){
echo $_POST['submit'];
}
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
<base href="../../">
</head>
<body>
<form method="post" action="algorithm/debug_login.php" >
<input type="text" name="username" value="Gebruikersnaam" /><br /><br />
<input type="password" name="pwrd" value="Wachtwoord" /><br /><br />
<input type="submit" name="submit" value=" Log in " />
</form>
</body>
</html>