2013-11-14 9 views
12

Notice: Undefined index: HTTP_REFERERNotice: Undefined index: HTTP_REFERER

$ HTTP_REFERER = $ _SERVER [ 'HTTP_REFERER']

i verwendet, um dieses von tutorial.and es sieht okay

auch Code ist Aufruf von einschließlich Datei

was soll ich ändern?

Ich habe print_r ($ _ SERVER) hinzugefügt; und jetzt gibt Seite mir diese

Array ([UNIQUE_ID] => UoSxWa56310AAAwUckIAAAAA 
     [HTTP_HOST] => movafaghha.com 
     [HTTP_COOKIE] => __utma=210711305.58608218.1372977010.1372977010.1372977010.1; __utmz=210711305.1372977010.1.1.utmcsr=who.is|utmccn=(referral)|utmcmd=referral|utmcct=/whois/movafaghha.com; PHPSESSID=83eb0e2ae7ebe4b6c2eeb071d9f5de71 
     [HTTP_X_REAL_IP] => 109.109.41.81 
     [HTTP_X_FORWARDED_HOST] => movafaghha.com 
     [HTTP_X_FORWARDED_SERVER] => movafaghha.com 
     [HTTP_X_FORWARDED_FOR] => 109.109.41.81 
     [HTTP_CONNECTION] => close 
     [HTTP_CACHE_CONTROL] => max-age=0 
     [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
     [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.48 Safari/537.36 
     [HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8,fa;q=0.6 
     [PATH] => /sbin:/usr/sbin:/bin:/usr/bin 
     [SERVER_SIGNATURE] => 
     [SERVER_SOFTWARE] => Apache 
     [SERVER_NAME] => movafaghha.com 
     [SERVER_ADDR] => 174.122.223.93 
     [SERVER_PORT] => 80 
     [REMOTE_ADDR] => 109.109.41.81 
     [DOCUMENT_ROOT] => /home/memarest/public_html/movafaghha.com 
     [SERVER_ADMIN] => [email protected] 
     [SCRIPT_FILENAME] => /home/memarest/public_html/movafaghha.com/tutorials/login200/register.php 
     [REMOTE_PORT] => 49737 
     [GATEWAY_INTERFACE] => CGI/1.1 
     [SERVER_PROTOCOL] => HTTP/1.0 
     [REQUEST_METHOD] => GET 
     [QUERY_STRING] => 
     [REQUEST_URI] => /tutorials/login200/register.php 
     [SCRIPT_NAME] => /tutorials/login200/register.php 
     [PHP_SELF] => /tutorials/login200/register.php 
     [REQUEST_TIME_FLOAT] => 1384427865.54 
     [REQUEST_TIME] => 1384427865 
     [argv] => Array () 
     [argc] => 0 
    ) 

den Code bearbeitet, aber noch nicht alle fiedds Echo erforderlich

<?php 

ini_set("display_errors", true); 
error_reporting(E_ALL); 

require 'core.inc.php'; 






if(!loggedIn()) { 

//check mikunim ke tamame field ha dar form vojod darand va set shudan 

if(isset($_POST['username'])&&isset($_POST['password'])&&isset($_POST['password_again'])&&isset($_POST['firstname'])&&isset($_POST['surename'])) { 

    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $password_again = $_POST['password_again']; 
    $firtsname = $_POST['firstname']; 
    $surename = $_POST['surename']; 



    //HALA CHECK MIKUNIM KHALI HASTAND YA NA 

    if(!empty($username)&&!empty($password)&&!empty($password_again)&&!empty($firstname)&&!empty($surename)){ 
     echo 'ok' ; 

    } else { 

     echo ' All fields are required'; 

    } 

} 




?> 

<form action="register.php" method="POST"> 
Username:<br> <input type="text" name="username"><br> <br> 
Password:<br> <input type="password" name="password"><br><br> 
Password again:<br> <input type="password" name="password_again"><br><br> 
Firstname:<br> <input type="text" name="firstname"><br><br> 
Surname:<br> <input type="text" name="surename"><br><br> 
<input type="submit" value="register"> 



</form> 

<?php 

} elseif (loggedIn()) { 

    echo 'you \'re already logged in'; 
    } 

?> 

jetzt nach der Zugabe von

"e"

Seite sagt "alle Felder sind erforderlich"

aber selbst wenn alle Felder ausfüllen Nachricht nicht ändern

+0

sollten Sie für diese variable Existenz testen. Wenn Sie nicht von einer anderen Seite kommen, aber den Link zu der Seite direkt in der Adressleiste eingeben, wird es keine Referer geben ... –

Antwort

37

HTTP_REFERER nicht vom Client gesendet werden, ist garantiert:

Die Adresse der Seite (falls vorhanden), die den User-Agent auf die genannten aktuelle Seite. Dies wird vom Benutzeragenten festgelegt. Nicht alle Benutzeragenten werden dies festlegen, und einige bieten die Möglichkeit, HTTP_REFERER als eine Funktion zu ändern. Kurz gesagt, es kann nicht wirklich vertraut werden.

In Ihrem Fall ist es klar nicht gesendet werden, so wirklich alles, was Sie tun können, ist

if(isset($_SERVER['HTTP_REFERER'])) { 
    //do what you need to do here if it's set  
    } 
else 
{ 
    //it was not sent, perform your default actions here 
} 
+3

@Mojtaba - nur wundernd - warum haben Sie nicht akzeptiert? –

+0

Hallo, ich denke, die ursprüngliche Frage hätte vielleicht eine Spam-Website blockieren können (zumindest in meinem Fall). In der obigen Lösung wird in allen Fällen eine Aktion ausgeführt. Hier ist, was ich getan habe: if (iset ($ _ SERVER ['HTTP_REFERER']) && $ _SERVER ['HTTP_REFERER'] == 'www.spamwebsite.com') {// Aktion}. – coder

+0

Dies ist eine korrekte Frage – albertoiNET

4
if (isset($_SERVER['HTTP_REFERER'])) {$THE_REFER=$_SERVER['HTTP_REFERER']} 
+1

Die 'isset' Methode gibt einen booleschen Wert zurück. Ihre '$ THE_REFER'-Variable wird" wahr "oder" falsch "sein, nicht der tatsächliche Wert des Referer-Headers. –

+0

@JeffKilbride Vielen Dank für Ihren Kommentar. Dieser Beitrag ist seit 2 Jahren ...Ich weiß nicht, warum ich diesen unlogischen Beitrag geschickt habe! Ich habe geschockt! Ich habe es bearbeitet. Danke nochmal –

0

Der richtige Weg zu reffer ist

$my_referer = isset($_POST['referer']) ? trim($_POST['referer']) : (isset($_SERVER['HTTP_REFERER']) ? base64_encode($_SERVER['HTTP_REFERER']) : false); 
0

Undefined index Mittel der Array-Schlüssel ist nicht gesetzt, a:

var_dump($_POST); die(); 

vor der Zeile, die den Fehler auslöst und erkennen, dass Sie versuchen, einen Array-Schlüssel abzurufen, der nicht existiert.