使用php标头时页面没有正确重定向

时间:2017-03-27 10:43:06

标签: php html

我想使用php标头。我查看php header manual。就我而言,我认为我应该使用header("Location: $_SERVER[PHP_SELF]");

但是当我刷新页面时,我收到错误“页面没有正确重定向”。

我的HTML代码

<!DOCTYPE html>
<html> 
<head>
</head>
<body>
<div class=CSSTableGenerator>
<table>
<thead>
    <tr>
        <th>ID</th>
        <th>Code</th>
        <th>Name</th>
        <th></th>
    </tr>
</thead>
<tbody>

        <?php
    require ("upName.php");
        for($i = 1; $i <= $usr; $i++)
        {
         echo"<form action='?' method='POST'>";
         echo"<tr>";
         echo"<td><div id='id'>".$id[$i]."</div></td>";
         echo"<td><div id='code'><input type='hidden' name='id' value='" . $id[$i] . "|".$id[$i]."' />".$code[$i]."</div></td>";
         echo"<td><div id='name'><input id='name' name='name' value='$name[$i]' /></div></td>";
         echo"<td><input type='submit' id='muuda' value='Muuda' /></td>";
         echo"</tr>";
         echo"</form>";
        }
        ?>

<script>

</script>

</tbody>
</table>
</div>
</body>
</html>

我的PHP

    <?php
$usr=0;
    $sql="SELECT * from user where code like '%IN%' ";
    $sensors = $db->query($sql);
    $result1=$sensors->fetchAll(PDO::FETCH_ASSOC);

    $namee=$_POST['name'];
    $codee=$_POST['code'];
    $idd=explode('|', $_POST['id']);
    $idd1=trim($idd[0]);
    $idd2=trim($idd[1]);  
    $idd2=$idd2+1;
    if(empty($_POST['name'])){}else{
    $sql2="UPDATE user set name='" .$namee. "' where id IN('" .$idd1. "','".$idd2."') ";
    if(isset($_SESSION['name'])) {
    $sensorss = $db->query($sql2);
    $result2=$sensors->fetchAll(PDO::FETCH_ASSOC);}}
    header("Location: $_SERVER[PHP_SELF]");
      //Debug::dump($sql2);

            foreach ($result1 as $row)
        {


        $usr++;
            $id[$usr]= $row["id"];
            $code[$usr]= $row["code"];
            $name[$usr]= $row["name"];

            $code[$usr]=explode(' ', $code[$usr]);
            $code[$usr]=trim($code[$usr][0]);

            }

        ?>

无法弄清楚问题是什么..

3 个答案:

答案 0 :(得分:2)

尝试使用此代码:

header("Location: ".$_SERVER['PHP_SELF']." ");

答案 1 :(得分:0)

问题是您正在重定向到同一页面。这会创建一个重定向循环,它会生成您正在获得的错误。

答案 2 :(得分:0)

我解决了我的问题,不知怎的,我仍然无法使用header("Location: ".$_SERVER['PHP_SELF']);

但是在使用这个时

if(isset($_POST["name"])){
    header('Location: editName.php');
    exit;}

一切正常!