Intereting Posts

HTML PHP Отобразить имя пользователя после успешного входа в систему

У меня есть <div> внутри моего файла onlinestore.html, который является моим меню, которое содержит имя входа / регистрации. То, что я хочу, это после входа в систему успеха, <div> для входа / регистрации изменится на имя пользователя. То, что я сделал, не отображает ожидаемый результат, который я хочу. Так что-то не так в моем коде?

Вот что я сделал:

onlinestore.html

 <li class='active' style='float:right;'> <?php session_start(); if($_SESSION['logged']==true){ echo $_SESSION["username"]; echo '<a href="logout.php"><span>Logout</span></a></li>'; } elseif($_SESSION['logged']==false) echo '<a href="registerform.html"><span>Login/Register</span></a></li>'; ?> 

Вот еще один файл checklogin.php:

 if($count==1){ session_start(); $_SESSION['logged']=true; $_SESSION ['username']=$myusername; header("refresh:1;url=onlinestore.html"); } else{ $_SESSION['logged']=false; header("refresh:2;url=login.html");} 

Вот ожидаемый результат:

Перед входом введите описание изображения здесь

После входа в систему введите описание изображения здесь

Вот что я получаю с кодом выше: Мой код не работает

Либо вам нужно переименовать ваши файлы onlinestore.html и login.html в файлы .php, чтобы PHP работал в них, либо используйте параметр addtype в вашем файле htaccess.

В вашем onlinestore.html выполните следующее:

 <?php session_start(); // Right at the top of your script ?> <li class='active' style='float:right;'> <?php if($_SESSION['logged']==true) { echo $_SESSION["username"]; echo '<a href="logout.php"><span>Logout</span></a></li>'; } elseif($_SESSION['logged']==false) { echo '<a href="registerform.html"><span>Login/Register</span></a></li>'; } ?> 

В вашем checklogin.php выполните следующее:

 <?php session_start(); // Right at the top of your script ?> if($count==1) { $_SESSION['logged']=true; $_SESSION['username']=$myusername; header("Location: onlinestore.html"); exit(); } else { $_SESSION['logged']=false; header("Location: login.html"); exit(); } 

Если вышеуказанное не работает, пожалуйста, сообщите мне, что произойдет.
У вас есть html-файлы для анализа кода PHP?
Или файл htaccess с:
AddType application/x-httpd-php .htm .html
?

РЕДАКТИРОВАТЬ

Попробуйте это для отладки:

В вашем checklogin.php выполните следующее:

 <?php session_start(); // Right at the top of your script ?> if($count==1) { $_SESSION['logged']=true; $_SESSION['username']=$myusername; echo "Login worked"; exit(); } else { $_SESSION['logged']=false; echo "Login failed"; exit(); } 

Это покажет вам, будет ли вход работать. Если это не так, и вы получите «login failed», то именно поэтому вы получаете ссылку «Войти / Зарегистрироваться» на своей странице.

Если он показывает «Вход в систему», затем верните код, как он был, а затем на странице onlinestore.html , сделайте это в верхней части файла:

 echo "This is working"; exit(); 

Что происходит? Получаете ли вы сообщение «Это работает» на странице и ничего больше?

В вашем заявлении else вы не определили session_start() как вы это делали в вашем операторе if .

Иначе вместо проверки значения $ _SESSION и определения его значения вы можете использовать следующее:

 if (session_status() == PHP_SESSION_NONE) { //Do something if the session is not existing } 

Другие опции хранят переменные в $_COOKIE а затем проверяют, $_COOKIE или нет ( if(isset($_COOKIE["username"]){} )

Надеюсь, это помогло вам

Если вы хотите, чтобы имя пользователя отображалось вместо этого, как в примере, вам нужно изменить свой код для onlinestore.html на следующее:

 <li class='active' style='float:right;'> <?php session_start(); if($_SESSION['logged']==true){ echo '<a href="logout.php"><span>' + $_SESSION["username"] + ' (Logout)</span></a></li>'; } elseif($_SESSION['logged']==false) echo '<a href="registerform.html"><span>Login/Register</span></a></li>'; ?> 

Я думаю, что ваш PHP должен выглядеть примерно так:

 <?php session_start(); username = $_SESSION["username"] if($_SESSION['logged'] == true) { echo '<a href="logout.php"><span>' . username. 'Logout</span></a></li>'; } else { echo '<a href="registerform.html"><span>Login/Register</span></a></li>'; } ?> 

Используйте либо скобки как в if, так и в другом или используйте none. Кстати, вам не нужен elseif, если вы только проверяете логическое значение. (есть только 2 возможности)

Ну, есть много недостающего кода.

Где ваш скрипт входа?

Во-первых, вам нужна <form> с полями ввода (логин и пароль) и кнопкой отправки.

Например:

 <form action='login.php' method='post'> <input type='text' name='loginname'></input> <input type='password' name='loginpassword'></input> <input type='submit'>Submit</input> </form> 

Ваш login.php

 <?php session_start(); // Dont forget to check your variables $loginname = $_POST["loginname"]; $password = $_POST["loginpassword"]; // Check the correct login (for example with a database) if ($login_correct) { $_SESSION["username"] = $loginname; $_SESSION["logged"] = true; header("index.html"); exit; else { $_SESSION["logged"] = false; header("registerform.html"); exit; } } ?> 

В вашем index.html вы можете сделать:

 <?php session_start(); if($_SESSION['logged'] == true){ echo $_SESSION["username"]; echo '<a href="logout.php"><span>Logout</span></a></li>'; } else { echo '<a href="registerform.html"><span>Login/Register</span></a></li>'; } ?> 
 <div class="msg"><?php echo $msg;?></div> <form type="submit"> <input type="text" name="Email"> <input type="password" name="Password"> <button type="submit" name="Login">Login</button> </form> <?php require 'connection.php'; if (isset($_POST['Login'])) { $email = $_POST['Email']; $password = $_POST['Password']; $user = "SELECT username FROM table_name WHERE email = '".$email."' and password = '".$password."'"; $user = mysqli_query($con, $user); if (mysqli_num_rows($user) > 0) { while ($row = mysqli_fetch_array($user)) { $username = $row['username']; } } else { $msg = "Can't Log in"; } } echo $username; ?>