我想将登录的用户重定向到主页(member-index.php),我使用了以下代码来完成此操作,但这不起作用。
<?php
function redirect() {
header('location:member-index.php');
}
?>
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
if(isset($_SESSION['SESS_FIRST_NAME'])){
redirect();
}
?>
<form id="loginForm" name="loginForm" method="post" action="login-exec.php">
<input name="email" type="text" class="textfield" id="login" placeholder="username" />
<input name="password" type="password" class="textfield" id="password" placeholder="password"/>
<input type="submit" name="Submit" value="LOGIN" />
</form>
</body>
</html>
(login-exec.php)的 session 变量
$qry="SELECT * FROM members WHERE email='$login' AND passwd='".md5($_POST['password'])."'";
$result=mysql_query($qry);
//Check whether the query was successful or not
if($result) {
if(mysql_num_rows($result) == 1) {
//Login Successful
session_regenerate_id();
$member = mysql_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
$_SESSION['SESS_FIRST_NAME'] = $member['fullname'];
其他带有 session 的页面,工作得很好,我可以在另一个页面上获取并打印登录的用户,但无法在登录表单页面中获取 session 工作。 任何帮助将不胜感激!
最佳答案
我对错误报告感到惊讶 error_reporting(E_ALL); ini_set('display_errors', 1);
没有向您发出有关在 header 之前输出的警告。
即:
Warning: session_start(): Cannot send session cache limiter - headers already sent...
移动您的 <?php session_start(); ?>
在代码的顶部。
<?php session_start(); ?>
<?php
function redirect() {
header('location:member-index.php');
exit;
}
?>
并添加 exit;
在 header 之后以避免进一步执行。
还要确保所有文件不包含字节顺序标记 (BOM),并且 header 之前没有输出。一个空格、HTML、什么都没有,甚至没有 cookie,或者任何其他可以作为输出的东西。
- 所有文件都应以 UTF-8 不带 BOM 格式保存在代码编辑器中。
关于php - 重定向已登录 PHP 的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28568025/