PHP标头位置功能无法在窗体中工作

时间:2017-07-04 06:40:19

标签: javascript php html

我正在尝试为我的网站制作一份注册表。我正在使用下面的代码。所有错误处理程序都可以正常工作,因为它将用户添加到我的数据库中。我已经trid添加ob_start。我使用插件为崇高文本删除了所有空格。我试图使用javascript而不是php(top.window)。我也尝试使用完整的URL而不仅仅是目录。但是,当我点击提交时,它并没有将我重定向到我在位置后放置的地址。当我点击按钮它带我到这个PHP文件,但没有重定向回到注册页面,这是一个单独的文件(我知道有很多类似的问题已经被问到,但他们似乎不适合我的情况) 。 有谁知道如何解决这个问题?

if (isset($_POST['submit'])){

include_once 'db.php';

$uid = mysqli_real_escape_string($conn, $_POST['uid']);
$pwd = mysqli_real_escape_string($conn, $_POST['pwd']);
$email = mysqli_real_escape_string($conn, $_POST['email']);

//error handlers
//Check for empty fields
if (empty($uid) || empty($pwd) || empty($email)) {

    header("Location : /login/register.php?signup=empty");
    exit();

} else{

    //Check if input characters are valid
    if (!preg_match("/^[a-zA-Z]*$/", $uid)) {

        header('Location: /login/register.php?signup=invalid');
        exit();

    } else {

        //Check if email is valid
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            header('Location : /login/register.php?signup=email');
            exit();
        } else {
            $sql = "SELECT * FROM users WHERE user_uid='$uid'";
            $result = mysqli_query($conn, $sql);
            $resultCheck = mysqli_num_rows($result);

            if ($resultCheck > 0) {
                header('Location : /login/register.php?signup=usertaken');
            exit();
            } else {
                //Hashing the password
                $hashedPwd = password_hash($pwd, PASSWORD_DEFAULT);
                //Insert the user into the databse
                $sql = "INSERT INTO users (user_uid, user_pwd, user_email) VALUES ('$uid', '$hashedPwd', '$email');";
                mysqli_query($conn, $sql);
                header('Location : /login/register.php?signup=success');
                exit();
            }
        }



    }

}

} else {
    header('Location : /login/register.php');
    exit();
}

已解决 - 在Nigel Ren的“位置”回答后删除空格

3 个答案:

答案 0 :(得分:0)

尝试使用绝对URI

                 <input type="radio" name="tabs"  value="first" id="toggle-tab1"  {% if strategy == 'l' %} checked="checked"{% endif %} />
                 <label for="toggle-tab1">Long</label>

                 <input type="radio" name="tabs"   value="second" id="toggle-tab2" {% if strategy == 's' %} checked="checked" {% endif %}  />
                 <label for="toggle-tab2">Short</label>



                 <div id="tab1" class="tab"  >

        <form action="{% url "backtest" %}" method='POST' role='form' id='form'>
             {% csrf_token %}
             <input type="hidden" name="tabs"  value="first" id="toggle-tab1"  checked="checked" />

答案 1 :(得分:0)

确保您在位置之后和之前没有空格:...

header('Location : /login/register.php');

应该是

header('Location: /login/register.php');

答案 2 :(得分:0)

将所有标题替换为location.assign

header('Location : /login/register.php');

替换为

echo "<script>location.assign('/login/register.php')</script>";

使用位置分配后,也许问题解决..