【问题标题】:PHP QueryString with ArrayPHP QueryString 与数组
【发布时间】:2011-07-27 13:11:49
【问题描述】:

我在这里做错了什么?

首页.php

<html>
    <body>
        <?php
        if (!isset($_GET['error']))
            $error=array();
        else
            $error = $_GET['error'];
        ?>
        <script>
            function clearText(field){
                if (field.defaultValue == field.value) field.value = '';
                else if (field.value == '') field.value = field.defaultValue;

            }
        </script>
        <?php

        foreach($error as $key => $value){
            if ($value != '')
                echo '<p style="color:red;">', $value, '</p>';
        }
        ?>


        <form method="GET" action="validar.php">

            First Name: <input type="text" name="firstname" value="first name here" onFocus="clearText(this)" onBlur="clearText(this)"> <br>
            Last Name: <input type="text" name="lastname" value="last name here" onFocus="clearText(this)" onBlur="clearText(this)"> <br><br>

            <input type="submit" value="SEND">

        </form>

    </body>
</html>

secondPage.php

<?php
# confirmation.php

$firstname = $_GET['firstname'];
$latname = $_GET['lastname'];

?>
<html>
<body>
<h3>Congratulations <?php echo $firstname; $lastname; ?>, you have been successfully registered</h3>

</body>
</html>

validar.php

<?php

    $firstname = $_GET['firstname'];
    $lastname = $_GET['lastname'];

    $error['firstname'] = '';
    $error['lastname'] = '';

    $firstPage = "firstPage.php";
    $secondPage = "secondPage.php";

    $server_dir = $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . '/';

    if($firstname == "first name here"){
        $firstname == "";
        $error['firstname'] = 'Please introduce firstname <br>';
    }

    if($lastname == "last name here"){
        $lastname == "";
        $error['lastname'] = 'Please introduce last <br>';
    }

    if($error == ''){
        $query_string = '?firstname=' . $firstname;
        header('Location: http://' . $server_dir . $secondPage . $query_string);
    }
    else {

    $query_string = http_build_query($error);
    header('Location: http://' . $server_dir . $firstPage . $query_string);
}

    ?>

错误消息:访问被拒绝!我是 PHP 新手,所以我不知道如何构建带有多个字段错误的查询字符串。我正在使用一个键为“字段值”的数组,因为我认为它更容易。但我不是这是最好的方法,即使是这样,我也不确定我做得很好。任何帮助,将不胜感激, 约翰

【问题讨论】:

  • 您是否从 Web 服务器收到拒绝访问 (403)?回显传递给您的 header() 调用 'Location: http://' . $server_dir . $firstPage . $query_string 的字符串的结果,以确保它是一个有效的 URL 并且将到达您期望它去的地方
  • “访问被拒绝”什么时候?用户执行什么操作,您在哪里看到“拒绝访问”?这不太可能与您的查询字符串有关。

标签: php arrays query-string


【解决方案1】:

http_build_query 函数只构建查询。您需要在它前面加上问号来标记查询字符串的开头。

让我们拿你的代码:

header('位置:http://' . $server_dir . $firstPage . $query_string);

您需要插入“?”在 firstPage 和 query_string 之间:

header('位置:http://' . $server_dir . $firstPage . '?' . $query_string);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多