PHP变量未传递到下一页

时间:2015-04-04 17:00:29

标签: php variables post

所以我有两个文件。第一个是根文件夹中的index.php,另一个是在名为post_link的控制器文件夹中找到的index.php。我想将root的index.php中的表单中的电子邮件,密码和操作传递给post_link的index.php,但是当我尝试使用它时,它只是传递空值,filter_input(INPUT_POST,' value& #39)。如何将变量从根的index.php传递到post_link的index.php?

root的index.php:

<?php 
session_start();
require_once('model/fields.php');

// Add header
include '/view/header.php';

// Add fields with optional initial message
$validate = new Validate();
$fields = $validate->getFields();
$fields->addField('first_name');
$fields->addField('last_name');
$fields->addField('password');
$fields->addField('email', 'Must be a valid email address.');

// Makes sure the pages uses a secure connection
if(!isset($_SERVER['HTTPS'])) {
$url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
header("Location: " . $url);
exit();
}

$action = filter_input(INPUT_POST, 'action');
if ($action === NULL) {
$action = 'login';
$email = '';
} else {
$action = strtolower($action);
}

if ($email == '') {
$login_message = 'Login or register if you are a new user.';
}
else {
$login_message = '<span class="error">Invalid email.</span>';
}
?>
<main>
<h2>Login</h2>
<form action="post_list" method="post" class="aligned">
<fieldset>
    <legend>Customer Login</legend>

    <input type="hidden" name="action" value="login">

    <label>Email:</label>
    <input type="text" class="text" name="email">
    <br>

    <label>Password: </label>
    <input type="text" class="text" name="password">
    <br>

    <label>&nbsp;</label>
    <input type="submit" value="Login">
    <br>
</fieldset>
</form>

<form action="." method="post" class="aligned">
<fieldset>
    <legend>Customer Registration</legend>
    <input type="hidden" name="action" value="reset">

    <label>You must be registered to view posts</label>
    <input type="submit" value="Register here">
</fieldset>
</form>

<p><?php echo $login_message; ?></p>
</main>
<?php include 'view/footer.php'; ?>

控制器的index.php:

<?php
    // session_start();
    require_once('../model/database.php');
    require_once('../model/customers_db.php');
    require_once('../model/validate.php');
    $action = filter_input(INPUT_POST, 'action');
    if ($action === NULL) {
    $action = 'login';
    $email = '';
    } else {
    $action = strtolower($action);
    }

    switch ($action) {
    case 'login':
        $email = filter_input(INPUT_POST, 'email');
        $password = filter_input(INPUT_POST,'password');

        if (is_valid_customer_login($email)) {
            $_SESSION['is_valid_customer'] = true;
            $customer = get_customer($email);
            $first_name = $customer['firstName'];
            $last_name = $customer['lastName'];
            if (is_valid_customer_login_password($email, $password)) {
                include('../view/customer_menu.php');
            } else {
                $login_message = '<span class="error">Invalid password.</span>';
                include('../index.php');
            }

        } else {
            if ($email == '') {
                $login_message = 'Login or register if you are a new customer.';
            }
            else {
                $login_message = '<span class="error">Invalid email.</span>';
            }
        }
        break;
    case 'reset':
        // Reset values for variables
        $first_name = '';
        $last_name = '';
        $email = '';
        $password ='';

        // Load view
        include 'view/register.php';
        break;
    case 'register':
        // Copy form values to local variables
        $first_name = trim(filter_input(INPUT_POST, 'first_name'));
        $last_name = trim(filter_input(INPUT_POST, 'last_name'));
        $email = trim(filter_input(INPUT_POST, 'email'));
        $password =trim(filter_input(INPUT_POST, 'password'));

        // Validate form data
        $validate->text('first_name', $first_name);
        $validate->text('last_name', $last_name);
        $validate->email('email', $email);
        $validate->password('password', $password);

        // Load appropriate view based on hasErrors
        if ($fields->hasErrors()) {
            include 'view/register.php';
        } else {
            add_customer($first_name, $last_name, $email, $password);
            include 'view/customer_menu.php';
        }
        break;
    case 'logout':
        $_SESSION = array();   // Clear all session data from memory
        session_destroy();     // Clean up the session ID
        $login_message = 'You have been logged out.';
        include('view/login.php');
        break;
    }
    ?>    

1 个答案:

答案 0 :(得分:1)

这不会以这种方式工作,您必须将操作用作“post_list / index.php”。因此,请将表单修改为:

<form action="post_list/index.php" method="post" class="aligned">
    <fieldset>
        <legend>Customer Login</legend>
        <input type="hidden" name="action" value="login">
        <label>Email:</label>
        <input type="text" class="text" name="email">
        <br />
        <label>Password: </label>
        <input type="text" class="text" name="password">
        <br>
        <label>&nbsp;</label>
        <input type="submit" value="Login">
        <br>
    </fieldset>