登录

2016-04-29 52 views
0

后参考URL重定向我有下面的PHP代码:登录

<?php 

// let's add a ref url feature for quick guidance. 

$ref = $_SERVER['HTTP_REFERER']; 

$actual_link = "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]?ref=$ref"; 

header("Location: $actual_link"); 

if (empty($ref)) { 
    # do nothing... 
} else { 
    $redirect_to_ref = header("Location: $ref"); 
    header("Location: test.php"); 
} 

} 

?> 
<?php 

function checkRef() { 
    if (isset($redirect_to_ref)) { 
     $redirect_to_ref; 
    } else { 
     header("Location: index.php"); 
    } 
} 

$error = false; 
if(isset($_POST['login'])){ 
    $username = htmlspecialchars($_POST['username']); 
    $password = md5($_POST['password']); 
    if(file_exists('users/' . $username . '.xml')){ 
     $xml = new SimpleXMLElement('users/' . $username . '.xml', 0, true); 
     if($password == $xml->password){ 
      session_start(); 
      $_SESSION['username'] = $username; 
      checkRef(); 
      die; 
     } 
    } 
    $error = true; 
} 
?> 

此代码是一个简单的XML登录脚本。这将只记录该人,如果该人来自需要登录的人,但其中一人不是,我希望它在url栏中添加引用者,并且在登录成功后,重定向用户到该引用的网址。然而,这是现在给我一个500错误请帮...

+1

使用'header(“Location:$ ref”);'?你测试登录是否成功? –

+0

目前他们是否被重定向? –

+0

目前,他们将被重定向,成功登录后,引用网址 – anonymous

回答

1

试试这个:

<?php 
//GLOBAL FUNCTION TO GET THE CURRENT URL: 
function curPageURL() { 
    $pageURL = 'http'; 
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
    $pageURL .= "://"; 
    if ($_SERVER["SERVER_PORT"] != "80") { 
     $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
    } else { 
     $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
    } 
    return $pageURL; 
} 

// USE SESSION TO SET A VARIABLE FOR THE REF. URL: 
if (session_status() == PHP_SESSION_NONE || session_id() == '') { 
    session_start(); 
} 
if(isset($_SESSION['ref_url'])){ 
    header("Location: " . $_SESSION['ref_url']); 
    unset($_SESSION['ref_url']); 
} 



//IN ALL OTHER PAGES; SET THE URL OF THE CURRENT PAGE TO THE $_SESSION['ref_url'] VARIABLE LIKE SO 
if (session_status() == PHP_SESSION_NONE || session_id() == '') { 
    session_start(); 
} 
$_SESSION['ref_url'] = curPageURL(); 

希望这有助于...

0

我想他们登录 成功后

假设用户已经登录成功地将用户重定向到引用URL,您可以检查是否 $_SERVER['HTTP_REFERER']设定并相应地重定向,即:

$ref = $_SERVER['HTTP_REFERER']; 
$actual_link = "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]?ref=$ref"; 

if(isset($ref)){ 
    header("Location: $ref"); 
}else{ 
    //this doesn't make sense since the redirection will be made to the same page and $ref is empty. 
    //Think about something else when HTTP_REFERER isn't set. 
    //header("Location: $actual_link"); 
} 
+0

我将如何检查变量是否退出? if ... else ... elseif ...语句 – anonymous

+0

代码已经检查'isset($ ref)' –