$ _SESSION не хранит значения

0

У меня возникла проблема с хранением переменных $ _SESSION, я немного новичок в PHP, и мне это нравится в моих нынешних знаниях.

сначала мои кредиты:

Win 7 Pro 64 PHP 5 Удаленный сервер (не уверен в его конфигурации)

Поэтому я пытаюсь создать страницу входа, содержащую жестко заданное имя пользователя и пароль для целей тестирования.

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

login.php

<?php session_start();?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head >
<title>Login</title>

<link rel="stylesheet" href="//style.css" type="text/css" media="screen" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="en-gb" />

<script type="text/javascript">
    // Perform Client side validation of Username and Password
    function redirect() {
        var username = document.getElementById("username");
        var password = (document.getElementById("password"));

        if (!username.value == " ") {
             if (!password.value == " ") {
                if (username.value == "aknight") {
                    if (password.value == "00226291") {
                        window.location = "Home.php";
                        exit();
                    } else
                        alert("Username or Password Invalid");
                }
            } else
                alert("Password is required");
        } else
            alert("Username is required");
    }
</script>
</head>

<body>
<div id="header">
<h1>Product Order System</h1>
<br/>
<h2>The most expensive crap youll ever find...</h2>
</div>

<div id="content">
<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

$_SESSION['username'] = $_POST['username'];

}else{
?>

<form action="" method="POST">
<fieldset>
<legend>Login Information</legend>
<p>
<label for="Username">Username:</label>
<input type="text" name="username" id="username" />
</p>
<p>
<label for="Password">Password:</label>
<input type="password" name="password" id="password" />
</p>
<p>
<input type="button" name="login" value="Login" onclick="redirect();"/>
<input type="button" name="cancel" value="Cancel" />
</fieldset>
</form>
<?php }

    include ('includes/footer.html');
?>

home.php

<?php
session_start();
$page_title = 'Home';
include ('includes/header.php');
if(isset($_SESSION['username'])) { $name = $_SESSION['username'];}else{echo "<p>error</p>";}
echo "<h3>Welcome ".$name."!</h3>" ;
?>

Я попробовал распечатать значения $_SESSION и они опустели.

производя этот результат

<?php
   echo "<pre>".print_r($_SESSION)."</pre>";
?>

Array {
    [username] => 
}

Пожалуйста, не возражайте против JS, это проверка дошкольного клиента только для продвижения вперед.

Любая помощь будет принята с благодарностью.

Теги:
session

3 ответа

0

Укажите имя для входа в систему, а затем в функции проверки JavaScript вместо window.location выполните document.forms ['yourformname']. Submit().

  • 0
    Я стараюсь избегать использования формы в JS, но это имеет смысл, это было большим упущением.
0

Я думаю, что ваша проверка Javascript на самом деле является причиной этой проблемы. Вы устанавливаете переменную сеанса в Login.php, используя запрос POST, но POST на самом деле не отправляется на Login.php, поскольку ваш Javascript перенаправляется на Home.php, как только форма считается действительной. Вам необходимо отправить форму в какой-то момент процесса, так что вы действительно получите некоторые значения POST, которые вы будете использовать для заполнения ваших переменных SESSION. Если вы хотите сохранить свою проверку Javascript, возможно, взгляните на submit(): http://www.w3schools.com/jsref/met_form_submit.asp Перед отправкой вам нужно будет установить правильное свойство действия в своей форме.

  • 0
    Я действительно не видел, что я ничего не публиковал в login.php, и использование submit () для JS позволяет сделать это, вызов header () также отлично работает, спасибо.
0

Таким образом, существует проблема, которая, похоже, работает

<?php session_start();?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head >
<title>Login</title>

<link rel="stylesheet" href="//style.css" type="text/css" media="screen" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="en-gb" />

<script type="text/javascript">
    // Perform Client side validation of Username and Password
    function redirect() {
        var username = document.getElementById("username");
        var password = (document.getElementById("password"));

        if (!username.value == " ") {
            if (!password.value == " ") {
                if (username.value == "aknight") {
                    if (password.value == "00226291") {
                        document.forms[0].submit();
                        exit();
                    } else
                        alert("Username or Password Invalid");

                }
            } else
                alert("Password is required");

        } else
            alert("Username is required");

    }
</script>
</head>

<body>
<div id="header">
<h1>Product Order System</h1>
<br/>
<h2>The most expensive crap youll ever find...</h2>
</div>

<div id="content">
<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

    $_SESSION['username'] = $_POST['username'];
    header('Location : ../Home.php');

}else{
?>

<form action="Home.php" name="login" method="POST">
<fieldset>
<legend>Login Information</legend>
<p>
<label for="Username">Username:</label>
<input type="text" name="username" id="username" />
</p>
<p>
<label for="Password">Password:</label>
<input type="password" name="password" id="password" />
</p>
<p>
<input type="button" name="login" value="Login" onclick=" redirect();"/>
<input type="button" name="cancel" value="Cancel" />
</fieldset>
</form>
<?php }

    include ('includes/footer.html');
?>

Будет опубликован снова, если серия nex страниц имеет аналогичную проблему

благодаря

Ещё вопросы

Сообщество Overcoder
Наверх
Меню