2016-09-11 4 views
-1

Я только начинаю изучать PHP и до сих пор хорошо себя зарекомендовал, но я запутался в сеансах.php sessions имя пользователя/пароль

Если кто-то может взглянуть на мой код и сообщить мне, где я поступил не так, и как я могу исправить это, что было бы фантастично!

Имя пользователя/пароль жестко закодировано администратору 123 в соответствии с инструкциями.

Благодаря

HTML

<!DOCTYPE> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>if statements</title> 
</head> 

PHP 

<body> 
Login 
<form action="username.php" method="post"> 
    <p> 
    <label for="username">Enter your username</label> 
    <input type="text" name="username" id="username" /> 
    </p> 
    <p> 
    <label for="password">Enter your password</label> 
    <input type="text" name="password" id="password" /> 
    </p> 
    <p> 
    <label for="GO"></label> 
    <input type="submit" name="GO" id="GO" value="Submit" /> 
    </p> 
</form> 
</body> 
</html> 



<html> 
<body> 

<?php 
session_start(); 
If($username==”admin” && $password==”123”) 

    $username = isset($_POST['username']) ; 
    $password = isset($_POST['password']) ; 

    if ($name != 'admin' || $pass != '123') 
    { 
     elseif ($username === '') 
      die("ERROR: Please enter the username!"); 

     elseif ($password === '') 
      die("ERROR: Please enter the password!"); 

     elseif ($name == "test" && $pass == "test") { 

      // authentication successful, save username in session: 
      $_SESSION['user'] = 'admin'; 

      // redirect to index.php to welcome the logged in user: 
      header('Location: index.html'); 
      exit; 
     } 
     else { 
      die("ERROR: Incorrect username or password!"); 
     } 
    } 


    ?> 











</body> 
</html> 

EDIT

<html> 
<body> 

<?php 
session_start(); 
If($username==”admin” && $password=="123”) 

    $username = isset($_POST['username']) ; 
    $password = isset($_POST['password']) ; 



    if ($username == "admin" && $password == "123") { 

      // authentication successful, save username in session: 
      $_SESSION['username'] = 'admin'; 
      $_SESSION['password'] = '123'; 

      // redirect to welcome.html to welcome the logged in user: 
      header('Location: welcome.html'); 
      exit; 
     } 
     else { 
      die("ERROR: Incorrect username or password!"); 
     } 


    // no submitted data, display form: 
    ?> 

</body> 
</html> 

EDIT СНОВА:

<html> 
<body> 

<?php 


session_start(); 
if(isset($_POST['username'], $_POST['password'])) { 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    if($username === 'admin' && $password === '123') 
    $_SESSION['username'] = 'admin'; 
    $_SESSION['password'] = '123'; 

    session_write_close();{ 
        // redirect to welcome.html to welcome the logged in user: 
      header('Location: welcome.html'); 
      exit; 
    } 
} 


     else { 
      die("ERROR: Incorrect username or password!"); 
     } 


    // no submitted data, display form: 
    ?> 











</body> 
</html> 

Это вид теперь работает, но даже с неправильным именем пользователя/пароль, то идет пожаловать на welcome.html

+0

как получилось, что я получил 2 больших пальца?Я уже сказал, что только что начал изучать php – Mikey

+0

Я редактировал код, может быть, немного лучше, и я могу получить некоторую помощь? – Mikey

+0

где ваш код пользователя username.php? Используете ли вы базу данных mysql для подтверждения пароля? – SreYash

ответ

0

Так что с вашим кодом есть несколько вещей.

If($username==”admin” && $password==”123”) 

$username = isset($_POST['username']) ; 
$password = isset($_POST['password']) ; 

Вы проверяете, если $username и $password равны строке прежде, чем они определены. Вы должны сначала объявить свою переменную, прежде чем проверять, равна ли она некоторой строке. Во-вторых, функция isset проверит, установлена ​​ли переменная, а затем возвращается true, если это так и false - это не так. В-третьих, вы также забываете скобки после утверждения if.

Вы должны сделать это так:

if(isset($_POST['username'], $_POST['password'])) { 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    if($username === 'admin' && $password === 'admin123') { 
     //code here 
    } 
} 
0

Некоторые вещи, чтобы рассмотреть следующие вопросы:

Всегда используйте session_start() перед выходными данными.

Вы назначаете варны после их использования. Это неправильный порядок.

If($username==”admin” && $password=="123”) 

    $username = isset($_POST['username']) ; 
    $password = isset($_POST['password']) ; 

Использование session_write_close() перед headering:

$_SESSION['password'] = '123'; 

session_write_close(); 

// redirect to welcome.html to welcome the logged in user: 
header('Location: welcome.html'); 

И читать ваш код ... Вы делание то же самое, если дважды.

0

Вот полный пример, как вы хотите в простой way.first session_start() .then он будет проверять представленный имя пользователя и имя пользователя password.If является admin и пароль pass, чем он будет идти к месту wherever.php .Если имя пользователя и пароль неверно, это будет эхо-ошибка в <?php echo $passError;?>. Вы можете echo переменная в php на <?php $variable=2; echo $variable;?>.

<?php 
    session_start(); 
$username = $password = $userError = $passError = ''; 
    if(isset($_POST['sub'])){ 
     $username = $_POST['username']; 
    $password = $_POST['password']; 
     if($username === 'admin' && $password === 'pass'){ 
     $_SESSION['login'] = true; 
    header('LOCATION:wherever.php'); //go to location after successful login. 
    die(); 
     } 
     if($username !== 'admin'){$userError = 'Invalid Username';} 
     if($password !== 'password'){$passError = 'Invalid Password';} 
    } 
    ?><!DOCTYPE html> 
    <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'> 
     <head> 
     <meta http-equiv='content-type' content='text/html;charset=utf-8' /> 
     <title>Login</title> 

     </head> 
    <body> 
     <form name='input' action='' method='post'> 
     <label for='username'></label><input type='text' value='' id='username' name='username' /> 
     <div class='error'><?php echo $userError;?></div> 
     <label for='password'></label><input type='password' value='' id='password' name='password' /> 
     <div class='error'><?php echo $passError;?></div> 
     <input type='submit' value='Home' name='sub' /> 
     </form> 

    </body> 
    </html> 

Это включены в один файл, вы можете также сделать отдельные два файла, один HTML и другое местоположение файла php.Enter PHP в <form action="" если вы делаете два файла.

+0

спасибо, но это не то, что я хотел, я хотел проработать это с кем-то и попытаться понять, где я ошибся. Не все здесь хотят простого ответа. – Mikey