我的onlinestore.html文件中有一个<div>
,这是我的菜单,其中包含Login / Register。我想要的是在成功登录后,登录/注册的<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");}
这是预期的输出:
登录前
登录后
以下是我使用上述代码获得的内容:
答案 0 :(得分:2)
您需要将onlinestore.html
和login.html
重命名为.php文件,以便PHP可以在其中使用,或者在htaccess文件中使用addtype选项。
在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();
}
这将显示登录是否有效。如果不是,你就会得到&#34;登录失败&#34;那就是你得到&#34;登录/注册&#34;链接在您的页面上。
如果显示&#34;登录工作&#34;然后将代码设置回原来的样式,然后在onlinestore.html
页面上,在文件顶部执行此操作:
echo "This is working";
exit();
会发生什么?你收到的消息&#34;这是有效的&#34;在页面上没有别的?
答案 1 :(得分:1)
在else
声明中,您没有像在session_start()
声明中那样定义if
。
而且,不是检查$ _SESSION的值并确定它的值,而是使用以下内容:
if (session_status() == PHP_SESSION_NONE) {
//Do something if the session is not existing
}
其他选项是将变量存储在$_COOKIE
中,然后检查isset
是否if(isset($_COOKIE["username"]){}
我希望这能帮到你
答案 2 :(得分:0)
嗯,缺少很多代码。
您的登录脚本在哪里?
首先,您需要一个带有输入字段(登录名和密码)的<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>';
}
?>
答案 3 :(得分:0)
如果您希望显示用户名,就像在示例中一样,您需要将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>';
?>
答案 4 :(得分:0)
我认为你的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和else中使用任一括号或使用none。顺便说一句,如果你只是检查一个布尔值,你就不需要elseif。 (只有2种可能性)
答案 5 :(得分:0)
<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;
?>
答案 6 :(得分:0)
尝试一下。我不解释,但是成功登录后,我创建了会话变量。如果未使用会话变量,它将回显登录名,该登录名将链接到登录页面;否则,如果正在使用会话变量,则将打印用户名
正在登录的代码
ReadableStream
导航栏中的代码
if($row['col_userName'] == $username AND $row['col_custPass'] = $password){
$_SESSION['session_var_user'] = $username; // I created the session variable also don't forget to put the session_start(); at the top of your code
echo "
<script>
window.location.href = 'index.php';
</script>
";
}else{echo "failed";}
答案 7 :(得分:0)
也许您想尝试一下,它对我有用。
<?php
if($_SESSION['username'] == true) {
echo '<a href="logout.php"><span>Logout</span></a>';
}
else {
echo '<a href="login.php"><span>Login</span></a>';
}
?>