编辑:我已经检查了所有权限,并将所有权限设置为755,这样就不会出现问题
我制作了一个有效的剧本。但后来我把文件放在不同的文件夹中,由于某些原因header();
不再工作
这就是我的文件夹:
您有index.php
表单,如下所示:
<form action='../login.php' method="post">
Gebruikersnaam:<br>
<input type="text" name="username" placeholder="Je leerlingnummer" required/><br>
wachtwoord:<br>
<input type="password" name="password" placeholder="Je wachtwoord" required/><br>
<div class="g-recaptcha" data-sitekey="6LeLbhgUAAAAAKUTJmf9CeIB2JbgsG3C0ftJsJAp"></div>
<input type="submit" name="submit" class="groottext" value="inloggen" />
</form>
登录脚本之前正在运行,但由于我已将文件放在特定文件夹中,因此它不再重定向,因此会将页面保持在login.php
,如下所示:
if ($rows['authlvl'] == '1') {
header('location: leerling/repairs.php'); //User1
session_register("username");
session_register("password");
} else
if ($rows['authlvl'] == '2') {
header('location: admin/lloverzicht.php'); //User2
session_register("username");
session_register("password");
} else
if ($rows['authlvl'] == '3') {
header('location: admin/overzicht.php'); //user 3
session_register("username");
session_register("password");
} else {
echo "not authorised";
}
?>
login.php
中的其他一些代码正在运行,因为我已对其进行了测试,唯一不起作用的是重定向:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
<?php include( $_SERVER['DOCUMENT_ROOT'] . '/var/www/includes/dbconnect.php' ); ?>
$tbl_name="users";
$username=$_POST['username'];
$password=$_POST['password'];
$username = stripslashes($username);
$password = stripslashes($password);
$password = md5($password);
$sql="SELECT * FROM $tbl_name WHERE username='$username' and password='$password'";
$result=mysqli_query($conn,$sql);
$rows = mysqli_fetch_assoc($result);
if ($rows['authlvl'] == '1') {
header('location: leerling/repairs.php' ); //User1
session_start("username");
session_start("password");
}
else
if ($rows['authlvl'] == '2') {
header('location: admin/lloverzicht.php'); //User2
session_start("username");
session_start("password");
}
else
if ($rows['authlvl'] == '3') {
header('location: admin/overzicht.php'); //user 3
session_start("username");
session_start("password");
}
else
{
echo "je hebt geen toegang tot deze pagina";
}
?>
重定向到
的页面
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Adatum Reparatie Syteem</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<?php include "../includes/header2.php"; ?>
<div id="overzichtcontainer">
<h1> Reparatie aanmaken </h1>
<div id="formdiv">
<form action="insert1.php" method="post">
Leerlingnummer:
<br>
<input type="text" name="leerlingnummer" required placeholder="Voer hier het leerlingnummer in" />
<br> E-mailadres:
<br>
<input type="text" name="emailadres" required placeholder="Voer hier het e-mail adres van de leerling in" />
<br>
<br> 2e e-mailadres:
<br>
<input type="text" name="emailadres2" required placeholder="Voer hier het e-mailadres van de ouder/verzorger in" />
<br>
<br> Telefoonnummer:
<br>
<input type="text" name="telnr" required placeholder="Voer hier het telefoonnummer in waarop u bereikbaar bent" />
<br>
<br> Serienummer:
<br>
<input type="text" name="serienummer" required placeholder="Het serienummer van het ingenomen Device" />
<br>
<br> Serienummer (leen Device):
<br>
<input type="text" name="serienummer2" required placeholder="Het serienummer van het uitgegeven Device" />
<br>
<br> Schermcode:
<br>
<input type="text" name="schermcode" required placeholder="De code om het scherm te ontgrendelen" />
<br>
<br> Schade / Reparatie:
<br>
<input type="text" name="schade" required placeholder="Omschrijving schade" />
<br>
<br> Waterschade:
<br>
<input type="radio" name="water" value="nee" checked/>Nee
<br>
<input type="radio" name="water" value="ja" />ja
<br>
<br> Valschade:
<br>
<input type="radio" name="val" value="nee" checked/>Nee
<br>
<input type="radio" name="val" value="ja" />ja
<br>
<br> Aankoopdatum Device:
<br>
<input type="text" name="date" required placeholder="dd-mm-yy" />
<br>
<br> Leverancier Device:
<br>
<input type="text" name="levdevice" required placeholder="Waar is het Device gekocht" />
<br>
<br>
<input type="submit" name="submit" class="groottext" value="Reparatie indienen" />
</form>
</div>
</div>
</body>
</html>
&#13;
答案 0 :(得分:0)
您的问题的解决方案来自 Masivuye Cokile 的非常熟练的评论,我不会通过复制他的评论并得到一个滴答或+1来承认小便。
但是你的代码存在很多其他问题,我无法抗拒告诉你这些问题,所以你了解它们,可以看到它们,并且可以努力解决它们。
很抱歉,但显示的代码只是2006年。
您使用@RequiresPermission
密码 ,使用password_hash
甚至pre-PHP 5.3。
您应该 不 使用md5
或手动变量连接进行SQL生成。使用Paramaterised查询。谷歌一下。
必须 正确转义用户数据,stripslashes
NOT 足够好。至少应该使用mysqli_real_escape_string
。
stripslashes
已弃用 。停止使用它。而是使用session_register
超全球值。
在$_SESSION
重定向到另一个页面后,您应该强制PHP脚本在此指令后尽快结束。
PHP将继续处理页面,因此第一个标题重定位可以被第二个header
header
header("Location: indexA.php");
header("Location: indexB.php");
//// here the page indexB.php will always be loaded.
// because after calling the indexA.php the script needs
// to be stopped with exit or die(); commands.
效率低下。 PHP可以键入juggle,因此您可以简单地将其作为数字(int)进行比较,而不是将其强制为字符串。相反:$rows['authlvl'] == '2'
。
此处的代码会导致语法错误:
$rows['authlvl'] == 2
有两个原因:
1您在另一个PHP开始标记中有一个PHP开始标记:
<?php
error_reporting(E_ALL);
<?php include( $_SERVER['DOCUMENT_ROOT'] . '/var/www/includes/dbconnect.php' ); ?>
这是无效的。删除内部打开和关闭标签。 并且
2它看起来非常像 <?php
<?php
服务器文档根值将转到服务器的公共HTML区域的基础,这将是SERVER['document_root'] == /var/www/includes/dbconnect.php
文件夹,所以你在我看来,URL /www/
很可能是一个无效的文件夹结构值。
尝试使用$_SERVER['DOCUMENT_ROOT'] . '/var/www/
,然后调整print_r($_SERVER['DOCUMENT_ROOT']);
以适应此告诉你的内容。
答案 1 :(得分:-1)
重要的是要注意必须在发送任何实际输出之前调用header()(在PHP 4及更高版本中,您可以使用输出缓冲来解决此问题)。
只需检查你的php文件.. 也许你在header()函数之前打印了一些文本,也许是一个空格。
检查login.php文件的第一行没有空格,如下所示:
--- Blank space ---
<?php
如果存在,则将其更改为
<?php