HTML PHP成功登录后显示用户名

时间:2013-12-18 09:57:00

标签: php html

我的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");}

这是预期的输出:

  

登录前   enter image description here

     

登录后   enter image description here

     

以下是我使用上述代码获得的内容:   My code wont work

8 个答案:

答案 0 :(得分:2)

您需要将onlinestore.htmllogin.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>';
  }
?>