2014-08-30 2 views
-2
require "assets/php/config.php"; 
error_reporting(E_ALL); 

$location = null; 

if(isset($_GET['l'])) 
{ 

$location = retrieveAddress($_GET['l']); 
} 
if($location != null){ 

    header('Location: ' . $location); 
} 
else{ 
    header('HTTP/1.0 404 Not Found'); 
    echo 'Unknown link.'; 
} 



public static function retrieveAddress($name) 
    { 
     $con = new PDO(Config::$host, 
        Config::$user, 
        Config::$password); 
     if (!$con) { 
    die('Could not connect: ' . mysql_error()); 
     } 

     $sql = $con->prepare('SELECT address FROM links WHERE name = ?'); 
     $sql->execute($name); 
     $location = $sql->fetchAll(PDO::FETCH_ASSOC); 

     $con = null; 

     return $location; 

    } 

Этот сценарий должен позволить мне перейти в мою базу данных, где я сохраняю ссылки, а затем перенаправляюсь к этому местоположению, создавая его при работе с простым укороченным урком, я могу легко добавлять ссылки, чтобы база данных но при попытке получить здесь ничего не появляется. Я также попытался использовать error_reporting (E_ALL); но я все равно ничего не получаю. Кто-нибудь понял, что-то не так, я не вижу (я уверен, что что-то не так, но я не могу заметитьphp redirect script не работает

* Редактировать: я добираюсь до файла по ссылке, не используется ajax. text echos, и я не знаю, как проверить значение $ location, чтобы узнать, не получил ли я правильное значение без использования эха, я также отредактировал mysql, чтобы захватить только адрес, я также получил имя, которое было . еще одна ошибка, но я, кажется, есть еще один где-то

+0

Вы идете к URL через ссылку или ajax? – 2014-08-30 13:03:27

+0

'if (location! = Null)' это опечатка? Редактировать: Может быть полезно [Как получить полезные сообщения об ошибках в PHP?] (Http://stackoverflow.com/a/845025/3361444) – Debflav

+0

Это должно быть, если ($ location! = Null) –

ответ

3

Забудь мой комментарий, я только что видел вы отправляете выход:.

echo "before all"; 

перед отправкой заголовков Thats a big no-no. Вы никогда не отправляете вывод перед перенаправлением и, как правило, никогда не отправляете заголовки после вывода. Это также включает whitespace.

Кроме того, $location является остальные NULL через все сценарии, так как вы меняете его из retrieveAddress, но так как ваша переменная является глобальной вам необходимо либо объявить его как global $location внутри функции или доступ к нему, как $GLOBALS["location"]

Было бы проще, если бы вы просто вернули $ location из функции.

UPDATE

Видимо, ошибка была использованием public static вне класса

public static function retrieveAddress($name) 
    { 

Результатом было то, что каким-то образом сервер запуталась без возврата каких-либо ошибок или выход. Единственная подсказка, которую мы получили (я и ОП) было таинственным сообщением через firebug Reload the page to get source for... Более подробную информацию об этом сообщении можно найти here.

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

+0

Я попытался получить доступ к нему как $ GLOBALS, объявить его и вернуть $ location из функции, но до сих пор не ответил. Есть ли способ заставить его дать мне ответ? – allegroBegin

+1

Вы сделали изменения, как удаление всего текста? Если еще, пожалуйста, обновите вопрос, чтобы узнать. Вы уверены, что получаете правильное '$ location' после вызова functin? Что значит ответ? Как вы дошли до файла? ссылка или ajax? – 2014-08-30 13:30:11

+0

теперь обновлен вместе со всем, что вы мне задали, но суммировать (я использую ссылку, теперь я устанавливаю Webug для отладки php и вижу, правильно ли указан адрес. – allegroBegin