我得到了我的user.php、header.phpndexph.php.登录后,我可以显示我的用户数据,但我想在我浏览的每个页面之间的页眉中调用它。。我的标题是我网站上的另一个文件,我使用";require_one('header.php')"要在indexph.php或user.php上调用它,但当我退出user.php时,我丢失了用户名数据,这是我代码的一部分。。
USER.PHP(并非全部)
<?php include("conexion.php");
require_once("header.php") ?>
<form action="" method="POST" id="loginform">
<input type="text" placeholder="Usuario" name="usuar">
<input type="password" placeholder="Contraseña" name="pw">
<button type="submit" class="btn" name="logi">Login</button>
<a href="">Olvidaste la contraseña?</a>
</form>
?>
header.php
<?php
include("conexion.php");
if(isset($_POST['logi'])){
$u=$_POST["usuar"];
$c=$_POST["pw"];
$sql="SELECT * FROM usuario
WHERE usuario='".$u."' AND contr='".$c."' ";
$res=mysql_query($sql,$con);
$can=mysql_num_rows($res);
$b=mysql_fetch_array($res);
if($can == 1)
{
echo "Login OK by ".$u;
//echo"".$_SESSION['id_user'];
//header('location:indexph.php');//te envia luego de logear correctamente
echo "<form action='logout.php' method='POST'>";
echo "<button type='submit' name='logo'>Logout</button>";
echo "</form>";
}
else
{
echo "Login Failed";
}
}
?>
<header id="header">
<div class="navbar">
<nav>
<ul id="menuitems">
<li><a href="../index.html">Home</a></li>
<li><a href="indexph.php">Productos</a></li>
<li><a href="añadir.html">Añadir</a></li>
<li><a href="detalle productos.html">D.P☠</a></li>
<li><a href="account.html">Cuenta</a></li>
</ul>
</nav>
<a href="kart.php" class="nav-item nav-link active">
<img src="../img/cart.png" width="50px" height="50px">
</a>
<!---here i would like to call my username so it shows in every page that calls
header.php---->
</div>
</header>
这是我的">indexph.php";我想显示用户名的众多页面之一,只需调用header.php
<?php
session_start();
require_once('header.php');
if(isset($_SESSION['usuar']))
{
echo"<br>Logged by ".$_SESSION['usuar'];
}
?>
<html> <!--- here it would be all html, images and everything---> </html>
但我不能;回声;不起作用,问题是想在标题上显示用户名,这都是plz帮助我无法解决的问题:c
因此,在header.php中,您需要在登录后设置会话变量,以便稍后使用。
if($can == 1) {
$_SESSION['id_user'] = $b['id']; // or however your id column is called in the database
// of course, you can also save the username or whatever value you want in a session variable
}
会话及其变量的问题是,它们被保存在服务器端,因此您可以在并发请求和不同的文件中使用它们,直到它们被销毁。
但我看到你发布的代码有几个问题:
- 您使用的是
mysql_*
函数,这些函数已被长期弃用(自2013年6月PHP 5.5以来)。检查一下,为什么你不应该在这里使用它们 - 您对SQL注入攻击是非常开放的。在这里读一下
- 您正在将密码以清晰易读的文本保存到数据库中。如果你曾经面临数据库漏洞,所有用户名/密码组合都是向世界开放的。也许有些人在其他网站上使用了相同的凭据。尝试在代码中使用
password_hash
和password_verify
函数。但首先,请熟悉您当前的代码:) - 不是问题,而是(可能)个人偏好。用英语编写代码,这将使获得帮助变得更容易,就像SO上的这里一样。不会说你的语言的人将能够更好地理解你的代码。此外,如果在某个时候你决定把项目交给一个不太热衷于甚至根本无法理解你语言的人,他们会有点挣扎