使用$ _SERVER [" PHP_SELF"]重定向并使用header()

时间:2016-07-04 03:25:16

标签: php

是否可以这样做,即时尝试验证表单,如果为TRUE,它将使用header()重定向..但似乎没有工作?或者我的方法完全错了?

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $email = $_POST["clientEmail"];

    if ($email != $sentEmailClients) {
        echo 'Please enter a valid email';
    } else {

        $newURL = "http://www.myurl.com";
        header('Location: ' . $newURL);
    }
}

2 个答案:

答案 0 :(得分:1)

向我们提供有关运行代码时实际发生情况的更多详细信息。您可能面临以下问题之一:

  1. 在您已将输出发送到浏览器后,您正在使用header()。必须在任何其他输出之前发送标头。查看the docs。如果您使用die('redirecting')更改该行并显示该文字,那么这就是您的问题。
  2. 请求方法不是POST。添加die($_SERVER['REQUEST_METHOD'])。如果打印了除POST以外的其他内容,那么这就是您的问题。
  3. $_POST['clientEmail']未设置,或不等于$email
  4. $email不是您所期望的(它来自哪里?)
  5. $sentEmailClients不是您所期望的(它来自哪里?)
  6. 基本上,“为什么不起作用?”这不是一个好问题,因为它没有给我们很多信息来帮助你。更具体地说明正在发生的事情。

    显示足够的代码,以便我们了解您使用的变量的来源。

答案 1 :(得分:0)

嗨好像你最外面的if condition无效,这就是为什么你的header function无法正常工作我只是尝试了这个并且它很好。这意味着您的第一个if conditionfalse,或者如果条件变为true则每次只需尝试echo您的值,然后再检查它们。

<?php
if (1) {
    $email = $_POST["clientEmail"];

    if (0) {
        echo 'Please enter a valid email';
    } else {

        $newURL = "http://www.google.com";
        header('Location: ' . $newURL);
    }
}

检查此print_r($_SERVER["REQUEST_METHOD"]);是否为POST和

$email != $sentEmailClients true or false