- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一个 php 新手,我使用的是 MAC 操作系统。我最近建立了一个网站并在本地主机下进行测试。它工作正常,直到有一天我尝试重命名我的主文件夹,并在从 root 切换回我重命名的文件夹时中途退出。然后我从 root 用户注销并登录我重命名的用户。然后我发现我必须重置所有内容。应用程序文件夹已移出用户主目录,与用户文件夹处于同一级别。
问题来了(不知道是不是上面那个 Action 引起的)我让用户使用用户名和密码登录,并使用 session 变量来存储用户名。我检查:
echo $_SESSION['name'];
echo session_status();
第一个显示我输入的用户名,第二个打印2所以我认为用户名存储在该 session 变量中。但是每当用户进入另一个页面时, session 变量就会被销毁。
问题是什么?
这是我为每个页面编写的代码作为页眉。它包含登录框。它曾经工作正常。
<?php
echo '<div id="pageheader">
<div class="wrap">
<div class="logo">
<a href="index.php"><img src="pics/1.gif" height="45px"></a>
</div>
<ul id="nav">
<li><a href="">New Arrival   /</a></li>
<li><a href="">Hot   /</a></li>
<li><a href="#">By School   /</a>
<ul >
<li><a href="">ADM</a></li>
<li><a href="">CEE</a></li>
<li><a href="">EEE</a></li>
<li><a href="">HSS</a></li>
<li><a href="">MAE</a></li>
<li><a href="">MSE</a></li>
<li><a href="">NBS</a></li>
<li><a href="">SBS</a></li>
<li><a href="">SCBE</a></li>
<li><a href="">SCI</a></li>
<li><a href="">SPMS</a></li>
<li><a href="">SCE</a></li>
</ul>
</li>
<li><a href="#">By Course   /</a>
<ul>
<li><a href="book.php?q=Mathematics">Mathematics</a></li>
<li><a href="book.php?q=Computer">Computing</a></li>
<li><a href="book.php?q=Accounting">Accounting</a></li>
<li><a href="book.php?q=Business">Business Law</a></li>
<li><a href="book.php?q=Physics">Physics</a></li>
<li><a href="book.php?q=Chemistry">Chemistry</a></li>
<li><a href="book.php?q=Biology">Biology</a></li>
</ul>
</li>
<li><a href="#">By Kind   /</a></li>
</ul>
<ul id="log">';
function generateLogin(){
echo ' <li id="login">
<a id="login-trigger" href="#">login <span>▼</span></a>
<div id="login-content">
<form action="'.$_SERVER['PHP_SELF'].'" method="post" enctype="multipart/form-data">
<fieldset class="inputs">
<input name="user" type="text" placeholder="Username" class="reqd" />
<input name="loginpw" type="password" placeholder="Password" class="reqd" />
</fieldset>
<fieldset class="actions">
<input type="submit" class="button1" value="Log in" />
<label><input name="keep" type="checkbox" value="yes" />Keep me signed in</label>
</fieldset>
</form>
</div>
</li>
<li id="signup">
<a id="signup-trigger" href="#">signup <span>▼</span></a>
<div id="signup-content">
<form action="signup.php" method="post" enctype="multipart/form-data">
<fieldset class="inputs">
<input name="username" id="username" type="text" placeholder="Username (at least 6 characters)" class="reqd user" />
<input name="email" id="email" type="email" placeholder="john@example.com" class="reqd email" />
<input id="passwd1" type="password" placeholder="Password (at least 6 characters)" class="reqd pd" />
<input name="pswd" id="passwd2" type="password" placeholder="Confirm your password" class="reqd passwd1" />
</fieldset>
<fieldset class="actions">
<input type="submit" class="button1" value="Sign up" /> <input type="reset" class="button1" />
</fieldset>
</form>
</div>
</li>
';
}
session_start();
if(!isset($_SESSION['name']) or $_GET['logout'] == 1){
if($_GET['logout'] == 1){unset($_SESSION['name']);}
if(isset($_POST['user'])){
$link = mysqli_connect('localhost','root','root','bookstore');
if (!$link){
die('Could not connect: ' . mysqli_error());
}
try {
$sql = "SELECT username FROM user
WHERE username='$_POST[user]' AND
pswd=MD5('$_POST[loginpw]')";
$sqlUser = "SELECT username FROM user
WHERE username='$_POST[user]'";
$result1 = mysqli_query($link, $sql);
$result2 = mysqli_query($link, $sqlUser);
if (!mysqli_fetch_row($result1)){
if(!mysqli_fetch_row($result2)){
throw new Exception("User ".$_POST['user']." does not exist!");
}
else{
throw new Exception("Incorrect password!");
}
}
else{
$_SESSION['name'] = $_POST['user'];
echo '
<ul id="log">
<li><a href="index.php?logout=1">Logout</a></li>
<li><a href="cart.php">Hi, '.$_POST['user'].'</a></li>
</ul>';
}
}catch(Exception $e){
echo "<script type='text/javascript'>alert('".$e->getMessage()."');</script>";
generateLogin();
}
mysqli_close($link);
}
else{
generateLogin();
}
}
else{
$name = $_SESSION['name'];
echo '
<ul id="log">
<li><a href="index.php?logout=1">Logout</a></li>
<li><a href="cart.php">Hi, '.$_SESSION['name'].'</a></li>
</ul>';
}
echo ' </ul>
<div id="search">
<form action="book.php" name="search" method="get" enctype="multipart/form-data">
<input name="q" id="q" autocomplete="off" onkeyup="showHint(this.value)" type="text" size="100" placeholder="Search..." />
<input type="submit" class="button1" value="Search" />
</form>
</div>
<div id="suggestBox">
<ul>
<div id="txtHint">
</div>
</ul>
</div>
</div>
</div>';
?>
最佳答案
您必须在使用 session 的每个页面上启动 session
<?php
session_start();
// now I can use my sessions in this page and
// I should start the session on each page I use them
?>
您应该在任何 html 输出之前使用 session_start()
,因此在您的情况下,请在第一个 echo 之前移动 session_start()
!
<?php
// move session_start here
session_start();
echo '<div id="pageheader">
<div class="wrap">';
?>
关于PHP session 被过早销毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13143313/
当你有一个对象 OBJ1 包含一个关键部分 CS 和一个指向另一个对象 OBJ2 的指针时,我无法弄清楚什么是正确的关闭过程 假设您有两个函数 A 和 B。 A进入临界区,修改OBJ2中的数据后离开临
我有一个成员变量声明为 CComPtr m_spXMLDoc; XML 文档是这样创建的 CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC
在我的工作平台中,我遇到了 session_destroy 问题 function logout() { $_SESSION['id'] = ''; session_destroy(); } 在这
如何使用 destroy 删除 jScrollPane。请您给出以下代码的简单示例: $(document).ready(function() { $(".div1").jScrollPane
这是我在这里发表的第一篇文章,但我想对社区表示感谢,因为通过来到这里并在已经得到解答的问题中找到解决方案,我已经无数次找到了问题的解决方案。 话虽这么说,我想进入正题。我正在 Code Gear 的
我在导航 View 中工作。在此导航 View 中,您可以偶然发现个人资料页面。在此个人资料页面中,您可以看到与当前个人资料相关的其他个人资料(基本上是数据 View 中显示的图片)。您可以通过点击这
我想销毁项目中的 session ,这样当我单击“注销”时,它会转到页面“KillSession.jsp”,在该文件中我编写了“session.invalidate();”然后我将用户重定向到登录页面
我有关于 Thread 的 2 问题,我只是想澄清一些事情。使用以下代码: public class MyThread implements Runnable { Boolean StopTh
我遇到了内存泄漏,代码类似于下面的代码(这是每个循环都有不同输入的模拟)。 问题 对象 Object_XXX 非常复杂,它与数据库以及其他填充了数据库数据的对象有连接。 for(int i=0
当我在 Python 中启动一个类时,我给它一些值。然后我调用类中执行某些操作的方法。这是一个片段: class TestClass(): def __init__(self):
我想删除所有 div、类、属性和几乎所有 CKEDITOR 添加到 DOM 的内容。例如调用 jquery tabs("destroy");将删除所有由 jQuery 选项卡添加的 div。我怎样才能
我想清除析构函数中的一个映射,但我不知道它是否为空。如果我按如下方式清除它可以吗? for(std::map::iterator it = m_map.begin(); it != m_map.end
我正在尝试克隆 TikTok 应用。对于主屏幕,我制作了一个 VerticalViewPager(自定义 View 分页器),其中包含“点赞”按钮、标题和评论。我正在从 Firebase 检索视频。
我正在制作自己的游戏。目标之一是在世界中拥有尽可能多的物体。在这个游戏中,需要在一些不可预测的时间段内创建许多对象(比如武器开火会创建一个对象),一旦该弹丸击中某物,该对象也需要被摧毁(也许它击中的东
有没有办法在 JavaScript 中破坏 HTML5 WebWorker? 这是我的情况:我有一个 Web 应用程序生成相当数量的 WebWorker(在 16 到 32 之间的任何地方)来优化一些
如何销毁 php 中的 session ? 事情是当用户点击注销按钮时, session 将结束,他将被重定向到 index.php 这是我的代码 客户.php 这是来自用户想要再次登录的 ind
关于 GtkBuilder 的问题。 当我们取消引用构建器指针时,它是否会破坏构建器创建的所有屏幕/小部件? if( builder_ptr ) g_object_unref(G_OBJECT
有没有办法销毁 WebView 实例?如果页面加载,并说视频开始播放,我希望能够,当我隐藏 WebView 时,基本上可以销毁它,或者至少重置它。 我知道我可以听 visibleProperty 并执
我有一组可拖动的元素。如何删除可拖动功能? $('.draggable').draggable('disable') 在我的情况下不是一个选项 $('.draggable').draggable('d
下面的代码会抛出一个 EZDecompressionError 消息 'Invalid ZStream operation' 每当行 Reader.Free 被执行。有人可以告诉我这段代码有什么问题吗
我是一名优秀的程序员,十分优秀!