2013-10-03 2 views
0

Я все еще новичок в php и все еще экспериментирую. Я получаю неопределенный индекс переменной:Не могу понять, почему неопределенный индекс

$httpreferer = $_SERVER['HTTP_REFERER']; 

Весь код страницы:

<?php 

ob_start(); 
session_start(); 
$current_file = $_SERVER['SCRIPT_NAME']; 
$httpreferer = $_SERVER['HTTP_REFERER']; 

function loggedin(){ 
    if(isset($_SESSION['user_id'])&&!empty($_SESSION['user_id'])){ 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

?> 

Извините, если это хромой вопрос. Я все еще новичок.

Заранее спасибо.

+0

не может быть ссылающейся или оно не может быть предоставлена ​​ –

+0

«HTTP_REFERER» «Это устанавливается агентом пользователя. Не все пользовательские агенты будут устанавливать это, а некоторые предоставляют возможность изменять HTTP_REFERER в качестве признака. Короче говоря, на него нельзя доверять ». –

+0

' HTTP_REFERER' не может быть задан в HTTP-запросе. Протестируйте для $ _SERVER ['HTTP_REFERER'] с 'isset()' перед его назначением. –

ответ

2

Браузеры (клиенты) могут отправлять любые HTTP-заголовки, которые им нравятся. Вы не можете доверять им!

Проверьте, обеспечивает ли клиент один с помощью isset():

if (isset($_SERVER['HTTP_REFERER'])) { 
    // do something 
} 

Имейте в виду, что это ничего о самих данных не сказать. Это может быть что угодно.

+0

Спасибо ComFreek .. Сделал трюк :) – joebegborg07

0

Если у посетителя нет реферера (по разным причинам он может не иметь прямого доступа к странице, а не щелчка ссылки на другом веб-сайте или исходящего из HTTPS-ссылки), то эта переменная не будет там.

Что вы можете сделать это

$httpreferer = empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER']; 

Это тройной оператор. http://php.net/manual/en/language.operators.comparison.php

Смежные вопросы