Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 错误:重定向太多_Php_Http - Fatal编程技术网

Php 错误:重定向太多

Php 错误:重定向太多,php,http,Php,Http,正在尝试创建我的server.php脚本,所以一切都很好,直到现在。我想阻止表单重新提交,并添加了标题('location:index.php')到我的脚本。然后我遇到了一个问题:错误太多的重定向。你们中的很多人都知道我的数据库里全是垃圾。这是我的代码: <?php $username = $email = $password = ""; $usernameErr = $emailErr = $passwordErr = ""; $servername = 'localhost'; $s

正在尝试创建我的server.php脚本,所以一切都很好,直到现在。我想阻止表单重新提交,并添加了
标题('location:index.php')到我的脚本。然后我遇到了一个问题:错误太多的重定向。你们中的很多人都知道我的数据库里全是垃圾。这是我的代码:

<?php

$username = $email = $password = "";
$usernameErr = $emailErr = $passwordErr = "";
$servername = 'localhost';
$serveruser = 'root';
$serverpassword = 'root';
$db = 'example';

$conn = new mysqli($servername, $serveruser, $serverpassword, $db);

if($conn->connect_error){
    die("Connection failed: " . $conn->connect_error);
}

if(isset($_POST['register'])) {
    $username = mysqli_real_escape_string($conn,$_POST['username']);
    $email = mysqli_real_escape_string($conn,$_POST['email']);
    $password = mysqli_real_escape_string($conn,$_POST['password']);

    if(empty($username)) {
        $usernameErr = "Username is required";
    } else {
    $username = test_input($_POST["username"]);

    if(!preg_match("/^[a-zA-z ]*$/", $username)){
        $usernameErr = "Only letters and whitespaces allowed";
    }

    }

    if(empty($email)) {
        $emailErr = "Email is required";
    } else {
    $email = test_input($_POST["email"]);

    if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $emailErr = "Wrong email format";
    }

    }

    if(empty($password)) {
        $passwordErr = "Password required";
    } else {
    $password = test_input($_POST["password"]);
        }
}

if ($usernameErr == "" && $emailErr == "" && $passwordErr == "") {
    $sql = "INSERT INTO users (username, email, password)
    VALUES('$username','$email','$password')";

    if($conn->query($sql) === TRUE) {
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }

    header("location: index.php"); 
}

function test_input($data) {
    $data = trim($data);
    $data = htmlspecialchars($data);
    $data = stripslashes($data);
    return $data;
}

?>

您可以通过以下两种方式停止此操作:

1) 您可以编写以下任意一项,
unset($\u POST['register'])
$\u POST=array()
就在
标题('location:index.php')之前所以它不会通过
if(isset($\u POST['register'])
条件,所以它不会进入无限循环


2) 或者在标题中使用完整的URL,如下所示:
header(“location:mydomain.com/index.php”)它也将停止无限循环。

为了防止太多重定向,请放入此代码

if ($usernameErr == "" && $emailErr == "" && $passwordErr == "") {
$sql = "INSERT INTO users (username, email, password)
VALUES('$username','$email','$password')";

if($conn->query($sql) === TRUE) {
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

header("location: index.php"); 
检查错误后,此块将被删除

为防止再次提交表格,请使用此问题的公认答案


是您粘贴index.php的代码吗?是的,正如@flauntster所说,如果您的页面在index.php中使用上述代码,那么它将重定向到同一页面并导致问题,伙计们,我也尝试了不同的url,这不行much@FeelsBadMan,你试过我的建议吗?是的,m8,我试过了,但仍然不起作用?我在interner上浏览了大约2个小时,0个进度…@FeelsBadMan,我没有注意到你在
标题
之外写了
if(isset($\u POST['register'))
。这就是罪魁祸首DHey,你能告诉我这段代码的作用吗?如果我删除它,用户的数据将不会保存在数据库中。此代码:`if($conn->query($sql)===TRUE){}else{echo“Error:$sql.”
“$conn->Error;}`您在
if
条件中编写的句子:
$conn->query($sql)
将执行查询,如果查询失败,它将返回
FALSE
,因此您的
if
部分将无法执行。我知道,但是它做什么呢???如果我删除“如果”我的用户数据不会保存在DBMAN中,你就是这里的国王,非常感谢。谢谢你们这么快的回复。祝你好运
if(isset($_POST['register'])) { //.................}