PHP标题(位置:...):强制地址栏中的URL更改 [英] PHP header(Location: ...): Force URL change in address bar

查看:453
本文介绍了PHP标题(位置:...):强制地址栏中的URL更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在使用带有数据库的PHP会话进行身份验证的移动网站上工作。
我有一个登录页面,表单在提交时会转到 server_login.php 。 php文件然后创建一些会话数据(存储在$ _SESSION中),并将用户重定向回索引页面:

  header ( 位置:../../的index.php); 

新网页(index.php)正确加载;但是,当标题重定向页面时,地址栏中的URL不会更改;它停留在* http://localhost/php/server/server_login.php*而不是 http://localhost/index.php ,因此我所有使用相对路径的其他资源都无法被加载。这就好像该网页仍然认为它驻留在/ php / server而不是/.



奇怪的是,我另外使用了header(location:... )在logout.php中工作,并通过URL更改成功重定向页面。



我已确保在* server_login.php *之前没有输出头重定向(在它上面只是调用mysql调用),我也使用了ob_start()和ob_end_flush()。

有没有强制URL的方法要更改地址栏(并因此希望修复相对路径问题)?或者我做错了什么?



P / S:我正在使用jQuery Mobile。

编辑:我的重定向代码不改变URL:

  //其他一些东西没有显示


$ sql =SELECT * FROM $ user_table WHERE email ='$ myemail'AND password ='$ mypassword';
$ login_result = mysql_query($ sql,$ connection);

$ count = mysql_num_rows($ login_result);

if($ count == 1){

//成功验证登录信息

session_start();

if(!isset($ _ SESSION ['is_logged_in'])){
$ _SESSION ['is_logged_in'] = 1;
}

if(!isset($ _ SESSION ['email'])){
$ _SESSION ['email'] = $ myemail;

if(!isset($ _ SESSION ['password'])){
$ _SESSION ['password'] = $ mypassword; ($!

$ b $ //注册用户名和ID
if((!!setset($ _ SESSION ['name']))&&(!isset($ _ SESSION [ 'user_id']))){
$ row = mysql_fetch_assoc($ login_result);
$ _SESSION ['name'] = $ row ['name'];
$ _SESSION ['user_id'] = $ row ['user_id'];
}

header(Location:http:// localhost:8080 / meet2eat / index.php);
$ b $} else {
//未登录。重定向回登录页面
header(Location:http:// localhost:8080 / meet2eat / php / login.php ?ERR = 1\" );



解决方案



  header(Location:blabla)
^
|
(空格)



  header(Location:blabla)


I'm currently working on a mobile site with authentication using PHP sessions with a database. I have a login page with a form that goes to server_login.php on submit. The php file then creates some session data (store in $_SESSION), and redirects the user back to the index page:

header("location:../../index.php");

The new web page (index.php) loads correctly; however, when the header redirects the page, the URL at the address bar is not changed; it stays at *http://localhost/php/server/server_login.php* instead of http://localhost/index.php and thus all my other resources that makes use of relative pathing could not be loaded. It's as if the web page still thinks that it resides at /php/server instead of /.

Strangely, my other use of header("location: ...") at logout.php works and redirects the page successfully with a URL change.

I've made sure that there are no outputs in my *server_login.php* before the header redirect (above it are just mysql calls to check) and I've used ob_start() and ob_end_flush() too.

Are there any methods of forcing the URL on the address bar to change (and thus hopefully fix the relative path problem)? Or am I doing something wrong?

P/S: I am using jQuery Mobile.

EDIT: Here's my code for the redirection that doesn't change the URL:

// some other stuff not shown


$sql = "SELECT * FROM $user_table WHERE email = '$myemail' AND password = '$mypassword'";
$login_result = mysql_query($sql, $connection);

$count = mysql_num_rows($login_result);

if ($count == 1) {

    // Successfully verified login information

    session_start();

    if (!isset($_SESSION['is_logged_in'])) {
        $_SESSION['is_logged_in'] = 1;
    }

    if (!isset($_SESSION['email'])) {
        $_SESSION['email'] = $myemail;
    }
    if (!isset($_SESSION['password'])) {
        $_SESSION['password'] = $mypassword;
    }

    // Register user's name and ID
    if ((!isset($_SESSION['name'])) && (!isset($_SESSION['user_id'])))  {
        $row = mysql_fetch_assoc($login_result);
        $_SESSION['name'] = $row['name'];
        $_SESSION['user_id'] = $row['user_id'];
    }

    header("Location: http://localhost:8080/meet2eat/index.php");

} else {
    // Not logged in. Redirect back to login page
    header("Location: http://localhost:8080/meet2eat/php/login.php?err=1");

}

解决方案

Try changing:

header("Location : blabla")
                ^
                |
           (whitespace)

To

header("Location: blabla")

这篇关于PHP标题(位置:...):强制地址栏中的URL更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆