簡體   English   中英

重定向回包含先前提交的字段值的頁面

[英]Redirect back to a page with field values submitted earlier

我有這個登錄頁面...

<!doctype html>
<html>
<head>
<title>Welcome!</title>
</head>
<body>  
<form action="signin_process.php" method="post">
Name: <input type="text" name="name">
<br />
SID: <input type="text" name="sid">
<br />
Nick Name: <input type="text" name="nn">
<br />
Email: <input type="text" name="email">
<br />
Password: <input type="text" name="pw">
<br />
<input type="submit" value="Login">
</form>
</body>
</html>

signin_process.php文件...

<!doctype html>
<html>
<head>
<title>Signin_process</title>
</head>
<body>
<?php
include ("connection.php");

$name = $_POST['name'];
$sid = $_POST['sid'];
$nn = $_POST['nn'];
$em = $_POST['email'];
$pw = $_POST['pw'];

$result = mysqli_query($con, "SELECT * FROM student_table WHERE SID='$sid'") or die('Query failed');
if(mysqli_num_rows($result)){
    echo ("<SCRIPT LANGUAGE='JavaScript'>
    window.alert('Invalied SID')
    window.location.href='welcome.php';
    </SCRIPT>");
    }

$result = mysqli_query($con, "SELECT * FROM student_table WHERE nickname='$nn'") or die('Query failed');
if(mysqli_num_rows($result)){
    echo ("<SCRIPT LANGUAGE='JavaScript'>
    window.alert('Nickname Takken!')
    window.location.href='welcome.php';
    </SCRIPT>");
    }

$result = mysqli_query($con, "SELECT * FROM student_table WHERE email='$em'") or die('Query failed');
if(mysqli_num_rows($result)){
    echo ("<SCRIPT LANGUAGE='JavaScript'>
    window.alert('Email already in use!')
    window.location.href='welcome.php';
    </SCRIPT>");
    }
?>
</body>
</html>

現在,如果SID,昵稱或電子郵件無效,我想重定向到登錄頁面,並且字段值將在此處提供。 這樣就不必再次輸入所有值。 就像我們在許多站點中看到的那樣,我們只需要更改未排除的輸入並再次提交即可。

謝謝!

您可以這樣使用:

if ($_POST['name'] == '') {
    echo "<script type='text/javascript'>window.history.back();</script>";
}

通過這種方式,字段值將在此之前給出。

一個基本的例子:

您的登錄表格:

<?php session_start(); ?>
<!DOCTYPE html>
<html>
    <head>
        <title>Welcome!</title>
    </head>
    <body>
        <ul>
            <?php 
                $errors = isset($_SESSION['errors']) && is_array($_SESSION['errors']) ? $_SESSION['errors'] : [];
                foreach ($errors as $error):
            ?>
            <li><?php print $error; ?></li>
            <?php endforeach; ?>
        </ul>
        <form action="signin_process.php" method="post">
            <label for="name">Name: </label>
            <input type="text" id="name" name="name" value="<?php print !isset($_SESSION['name']) ?: $_SESSION['name']; ?>" />
            <label for="sid">SID: </label>
            <input type="text" id="sid" name="sid" value="<?php print !isset($_SESSION['sid']) ?: $_SESSION['sid']; ?>" />
            <label for="nn">Nick Name: </label>
            <input type="text" id="nn" name="nn" value="<?php print !isset($_SESSION['nn']) ?: $_SESSION['nn']; ?>" />
            <label for="email">Email: </label>
            <input type="text" id="email" name="email" value="<?php print !isset($_SESSION['email']) ?: $_SESSION['email']; ?>" />
            <label for="pw">Password: </label>
            <input type="text" id="pw" name="pw" value="<?php print !isset($_SESSION['pw']) ?: $_SESSION['pw']; ?>" />
            <input type="submit" name="login" value="Login">
        </form>
     </body>
 </html>

您的PHP表單提交:

<?php
    session_start();
    include ("connection.php");

    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $name = $_SESSION['name'] = mysqli_real_escape_string($con, $_POST['name']);
        $sid = $_SESSION['sid'] = mysqli_real_escape_string($con, $_POST['sid']);
        $nn = $_SESSION['nn'] = mysqli_real_escape_string($con, $_POST['nn']);
        $em = $_SESSION['email'] = mysqli_real_escape_string($con, $_POST['email']);
        $pw = $_SESSION['pw'] = mysqli_real_escape_string($con, $_POST['pw']);

        $_SESSION['errors'] = [];

        $result = mysqli_query($con, "SELECT * FROM student_table WHERE SID='$sid'") or die('Query failed');
         if (mysqli_num_rows($result) > 0) {
             $_SESSION['errors'][] = 'Invalid SID.';
             header('Location: ' . $_SERVER['HTTP_REFERER']);
             exit();
         }

         $result = mysqli_query($con, "SELECT * FROM student_table WHERE nickname='$nn'") or die('Query failed');
         if (mysqli_num_rows($result) > 0) {
             $_SESSION['errors'][] = 'Nickname already in use.';
             header('Location: ' . $_SERVER['HTTP_REFERER']);
             exit();
         }

         $result = mysqli_query($con, "SELECT * FROM student_table WHERE email='$em'") or die('Query failed');
         if (mysqli_num_rows($result) > 0) {
             $_SESSION['errors'][] = 'E-mail already in use.';
             header('Location: ' . $_SERVER['HTTP_REFERER']);
             exit();
         }
    }

    header('Location: index.php');
    exit();
?>

那應該工作。

PS您應該研究准備好的語句和輸入過濾。 安全永遠是第一位的。

<?php
session_start();

if(isset($_POST['nam']) && (isset($_POST['sid']) && (isset($_POST['nn'])){

    if(($_POST['name']=== 'user')&& ($_POST['sid']==='sid')&&($_POST['nn']==='sid')){
        echo "correct";

            $_SESSION['us'] = "YES";
            $_SESSION['sid'] = "YES";
            $_SESSION['nn'] = "YES";
            header("location: userpage.php"); //directs to user area
    }else {
        echo "Wronge Password/Name/Nickname";
            $_SESSION['us'] = $_POST['name'];
            $_SESSION['sid'] = $_POST['sid'];
            $_SESSION['nn'] = $_POST['nn'];
            header("location: userpage.php"); //userpage redirects to this page 
    }}

?>
<!doctype html>
<html>
<head>
<title>Welcome!</title>
</head>
<body>  
<form action="" method="post">
Name: <input type="text" name="name" <?php echo isset($_SESSION['us']) ? $_SESSION['us'] : ""; ?> >
<br />
SID: <input type="text" name="sid" <?php echo isset($_SESSION['sid']) ? $_SESSION['sid'] : ""; ?> >
<br />
Nick Name: <input type="text" name="nn" <?php echo isset($_SESSION['sid']) ? $_SESSION['sid'] : ""; ?> >

</form>
</body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM