2014-11-08 8 views
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, это дошкольный проверка клиента просто двигаться вперед.

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

ответ

0

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

+0

Я стараюсь избегать использования формы в JS, но это имеет смысл здесь, было большим видом. – codeMonkey

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 позволяет сообщению произойти, вызывая заголовок(), отлично работает, спасибо. – codeMonkey

0

Так Heres фикс, что, кажется, работает

<?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'); 
?> 

Вывесит снова, если пех ряд страниц имеет похожую Issue

Благодаря