-4

簡単な登録フォームを設定しました。詳細を関数に送信してデータベースにデータを配置すると、ページが成功ページにリダイレクトされます...

これは私のローカルサーバーでは見事に機能しますが、ライブサーバーにアップロードするとリダイレクトされません

動作していないリダイレクトは 65 行目にあります:) register.php?success にリダイレクトするだけです。

どんな助けでもありがたく受け取られます。何人かの人々が同じ問題を抱えているのを見てきましたが、彼らの解決策は私にはうまくいきません:(

他のすべてのヘッダーの場所は機能します。これだけではありません:@

    <?php
    include 'core/init.php';
    //check if logged in
    logged_in_redirect();
    include 'includes/overall/header.php'; 

if (empty($_POST) === FALSE) {
    $required_fields = array('username', 'password', 'password_again', 'first_name', 'last_name', 'email');
    foreach ($_POST as $key => $value) {
        if (empty($value) && in_array($key, $required_fields) === true) {
            $errors[] = 'You appear to have missed something out, all fields are required.';
            break 1;

        }
    }

    if (empty($errors) === true) {
        if (user_exists($_POST['username']) === true ) {
            $errors[] = 'Sorry, the username \'' . $_POST['username'] . '\' is already taken.';
        }
        if (strlen($_POST['username']) < 6) {
            $errors[] = 'Sorry, your username must be at least 6 characters.';
        }
        if (strlen($_POST['username']) > 25) {
            $errors[] = 'Sorry, your username must be under 25 characters.';
        }
        if (preg_match("/\\s/", $_POST['username']) == true) {
            $errors[] = 'Your username must not contain any spaces.';
        }
        if (strlen($_POST['password']) < 6) {
            $errors[] = 'Sorry, your password must be at least 6 characters.';
        }
        if ($_POST['password'] !== $_POST['password_again']) {
            $errors[] = 'Sorry, your passwords do not match.';
        }
        if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false ) {
            $errors[] = 'Sorry, you did not provide a valid email address.';
        }
        if (email_exists($_POST['email']) === true ) {
            $errors[] = 'Sorry, the email \'' . $_POST['email'] . '\' is already registered to an account.';
        }
    }
}

?>
<h1>Register</h1>

<?php 
if (isset($_GET['success']) && empty($_GET['success'])) {
    echo "You have been registered successfully.";
} else {
    if (empty($_POST) === false && empty($errors) === true) {
        // register user
        $register_data = array(
            'username'      => $_POST['username'],
            'password'      => $_POST['password'],
            'first_name'    => $_POST['first_name'],
            'last_name'     => $_POST['last_name'],
            'email'         => $_POST['email'],
            'email_code'    => md5($_POST['username'] + microtime())
        );

        register_user($register_data);
        //header location not working *********************
        header('Location: register.php?success');
        exit();

    } else if (empty($errors) === false) {
        //error output
        echo output_errors($errors);
    }

?>
    <form action="" method="post">
        Register your account here, all fields are required.
        <ul>
            <li>
                Username: </br>
                <input type="text" name="username"/>
            </li>
            <li>
                Password: </br>
                <input type="password" name="password"/>
            </li>
            <li>
                Repeat Password: </br>
                <input type="password" name="password_again"/>
            </li>
            <li>
                First Name: </br>
                <input type="text" name="first_name"/>
            </li>
            <li>
                Last Name: </br>
                <input type="text" name="last_name"/>
            </li>
            <li>
                Email: </br>
                <input type="text" name="email"/>
            </li>
            <li>
                <input type="submit" value="Register"/>
            </li>
        </ul>
    </form>

<?php 
}
include 'includes/overall/footer.php'; 


?>
4

2 に答える 2

0

ほとんどの場合、出力バッファーは開発環境ではオンで、ライブ環境ではオフになっています。また、ユーザーへのエラーの表示は、ライブ環境ではオフにする必要があります。そうしないと、正確なエラー (ヘッダーの前に開始された出力) がブラウザーに表示されます。

このようなものの ini ファイルを確認してください: http://php.net/manual/en/outcontrol.configuration.php

于 2013-07-17T02:12:12.567 に答える
0

実際の出力が送信される前に、通常の HTML タグ、ファイル内の空白行、または PHP から header() を呼び出す必要があることに注意してください。include()、require()、関数、または別のファイル アクセス関数を使用してコードを読み取り、header() が呼び出される前に出力されるスペースまたは空の行があることは、非常に一般的なエラーです。単一の PHP/HTML ファイルを使用する場合にも、同じ問題が存在します。

于 2013-07-17T02:14:10.247 に答える