PHP QueryString с массивом - PullRequest
       0

PHP QueryString с массивом

0 голосов
/ 27 июля 2011

Что я здесь не так делаю?

firstpage.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, поэтому я не знаю, как построить строку запроса с ошибкой нескольких полей.Я делаю с массивом с ключом в качестве «значения поля», потому что я думаю, что это проще.Но я не лучший подход, и даже если это так, я не уверен, что я делаю это хорошо.Любая помощь будет оценена, Джон

1 Ответ

0 голосов
/ 27 июля 2011

Функция http_build_query только строит запрос.Вам нужно будет поставить его перед знаком вопроса, чтобы отметить начало строки запроса.

Давайте возьмем ваш код:


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

Вам нужно будет вставить "?"между firstPage и query_string:


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

...