PHP头不在服务器上?

时间:2017-03-13 09:02:36

标签: php mysql

编辑:我已经检查了所有权限,并将所有权限设置为755,这样就不会出现问题

我制作了一个有效的剧本。但后来我把文件放在不同的文件夹中,由于某些原因header();不再工作

这就是我的文件夹:

enter image description here

您有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";
}

?>

重定向到

的页面

&#13;
&#13;
<!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;
&#13;
&#13;

2 个答案:

答案 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