【发布时间】:2014-09-03 21:18:49
【问题描述】:
我做了一个简单的 php 网页来控制连接到 mysql 数据库的登录,它运行良好,但如果我重新加载网页,我会丢失 $_SESSION,我的代码是:
<?php
session_start();
include_once('clases/Usuario.php');
// Declaración de variables
$user = new Usuario();
$msg = "";
// Controlo el log in
if (isset($_POST['login']))
{
try
{
$_SESSION['user'] = $user->login($_POST['user'], $_POST['pass']);
$_SESSION['log'] = true;
$msg = "Conectado";
}
catch (Exception $e)
{
$msg = $e->getMessage();
}
}
// Controlo el log off
if (isset($_POST['logoff']))
{
$_SESSION['user'] = null;
$_SESSION['log'] = null;
$msg = "Desconectado";
}
?>
<html>
<head>
<meta charset="UTF-8">
<title>example</title>
</head>
<body>
<?php
if ($msg != "") echo "<font color='red'><h2>" . $msg . "</h2></font>"; // Mensaje de error si se diera el caso
// Controlo si está logueado o no
if (isset($_SESSION['log']) && $_SESSION['log'])
{
?>
<h1>Panel</h1>
<form action='index.php' method='post'><input type='submit' name='logoff' id='logoff' value='Log off' /></form>
<?php
}
else
{
?>
<h1>Login</h1>
<form action='index.php' method='post'>
<table>
<tr>
<td><b>Usuario:</b></td>
<td><input type='text' id='user' name='user' /></td>
</tr>
<tr>
<td><b>Contraseña:</b></td>
<td><input type='password' id='pass' name='pass' /></td>
</tr>
<tr>
<td colspan='2'><input type='submit' id='login' name='login' value='Log in' /></td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>
我做了很多登录,效果很好,但我很长时间没有对php 编程,可能我错过了一些东西。
【问题讨论】:
-
你不是应该在每一页的开头使用 session_start 吗?
-
您从不调用 session_start(),因此 PHP 没有义务为您保存会话数据。
-
对不起,它没有显示正确的代码,我写了'session_start()'
标签: php session session-variables reload