2013-03-26 2 views
0

Я хотел бы убедиться, что переменная $ _GET установлена ​​в значение другой переменной в моем URL-адресе. Если нет, то я хотел бы перезагрузить страницу/url, чтобы показать заданную переменную. Это код im, использующий:PHP - Перезагрузка URL с переменной GET

session_start(); 
$openfile = $_SESSION['openfile']; 
//check if $GET variable isset to the current $SESSION variable 
if($_GET['file'] !== $_SESSION['openfile'] && !empty($_SESSION['openfile'])){ 
//if not then create new URL string 
    $hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile; 
//change location to new URL string 
    header("Location: $hloc"); 
} 

Я не понимаю, почему это не работает. Любая помощь будет замечательной. Благодарю.

изменить: проблема в том, что URL-адрес не отражает то, что должно быть в заголовке. это исправление прекрасно, если страница снова перезагружается. однако это явно не то, что я хочу.

ответ

0

Я нашел проблему.

Это связано с неправильной информацией заголовка вниз по сценарию.

0

Можете ли вы привести примерный URL-адрес, чтобы мы могли видеть, что это его коксирует? Вместо этого попробуйте это. Обратите внимание, как $hloc теперь вне кавычек:

session_start(); 
//check if $GET variable isset to the current $SESSION variable 
if($_GET['file'] !== $_SESSION['openfile'] && !empty($_SESSION['openfile'])){ 
//if not then create new URL string 
    $hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile; 
//change location to new URL string 
    header("Location: " . $hloc); 
} 
+0

все еще не имеет значения. –

2
if(isset($_GET['file'])) { 
    //its set means value is not equal to null or false 
} else { 
    //its not set so redirect 
} 

http://php.net/manual/en/function.isset.php

+0

Неправда. В 'if', [значение может быть' false'] (http://viper-7.com/a8vApc). – nickb

+0

, если вы посмотрите на мой код, вы увидите, что инструкция if не является проблемой. и если вы прочитаете вопрос, вы увидите, что перенаправление не отображает URL-адрес, который я бы хотел. –

0

Существует ошибка. Undefined variable: openfile.

Изменение этой линии

$hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile;

в

$hloc = basename($_SERVER['PHP_SELF']).'?file='.$_SESSION['openfile']; 

В $ openvariable устанавливается (в соответствии с плаката комментарий), поэтому только неисправность: Либо переменная SESSION или GET переменная не set.Since следующий код работает отлично.

<?php 
session_start(); 
$_SESSION['openfile']='foo'; 
$_GET['file']='bar'; 
$openfile = $_SESSION['openfile']; 
//check if $GET variable isset to the current $SESSION variable 
if($_GET['file'] !== $_SESSION['openfile'] && !empty($_SESSION['openfile'])){ 
//if not then create new URL string 
    $hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile; 
//change location to new URL string 
    header("Location: $hloc"); 
} 
?> 

Как синтаксический ваш код выглядит идеально, таким образом, проверить правильно ли оба GET переменные и Session переменным устанавливаются или нет.

Первый Прокомментировать это заявлениеheader("Location: $hloc"); временно. Put:

echo $_GET['file']; 
echo $_SESSION['openfile']; 

раньше, если состояние и проверить output.It поможет вам отследить и знать, ошибка.

+0

Извините, я слишком сильно удалил свой код, например, цели. $ openfile задается переменной сеанса $ _SESSION ['openfile'] –