URL mit DB abgleichen

lissylucky

Mitglied
Hallo,

ich würde gerne die aufgerufene URL mit denen in der DB vergleichen, gibt es eine, die mit der übereinstimmt, soll die Seite angezeigt werden. Stimmt die URL nicht, soll sie zu einer Fehlerseite leiten.

Mein Ansatz:

PHP:
<?php
	$link = $_GET["link"];
    mysql_query("select FROM links WHERE Link='$link'");

	if(..........){
		$error = "Access Restricted";
		header("location: redeem.php");
		exit();
	}
?>

Bitte um Hilfe
 
Wenn das der Quelltext ist den du bei dir stehen hast brauchst du dich nicht zu wundern.
Zuerst einmal fehlt in dem mysqhl-Statement was du überhaupt haben willst.
Es muss also zwischen das select und das from noch ein link, da das ja vermutlich die spalte ist die du zurückgegeben haben willst.
Weiterhin steht dein $link noch in den "" des queries drin. Mit anderen Worten der Query der beim Server ankommt ist nicht
"SELECT FROM links WHERE Link = 'google.de'", sondern "SELECT FROM links WHERE link = '$link'"
Der richtige php-Code wäre also
PHP:
<?php
    $link = $_GET["link"];
    mysql_query("select Link FROM links WHERE Link='" . $link . "'");

    if(..........){
        $error = "Access Restricted";
        header("location: redeem.php");
        exit();
    }
?>

Der . vor und hinter dem $link sorgt dafür, dass der String mit dem Inhalt der variable verbunden wird.
 
Vielen Dank!

PHP:
    if(..........){ 
        $error = "Access Restricted"; 
        header("location: redeem.php"); 
        exit(); 
    }

und was muss ich bei if reinmachen?
 
Wieso eine andere Seite aufrufen?
Es würde doch vollkommen ausreichen eine andere Seite per include zu laden.
also einfach
PHP:
    if(..........){ 
        inlcude("errorpage.php");
        exit(); 
    }

Für die Umleitung hattest du glaube ich schon den richtigen Code. Kann höchstens sein, dass http da Case-Sensitiv ist (Groß und Kleinschreibung beachtet). In dem Fall musst du aus dem kleinen l in location einfach nen Großes L machen.
 
Achso, du willst wissen wonach du prüfen sollst.

Zuallererst brauchst du das Ergebnis der Abfrage. Also einfach $result = mysql_query("SELECT ......");
Wenn die URL nicht drin ist hat das Ergebnis logischer Weise 0 Reihen.
die Abfrage if($result->num_rows != 0) prüft also ob der Link drin ist.
Dann sähe dein php-Code so aus:

PHP:
<?php
    $link = $_GET["link"];
    $result = mysql_query("select Link FROM links WHERE Link='" . $link . "'");

    if($result->num_rows != 0){
        $error = "Access Restricted";
        header("location: redeem.php");
        exit();
    }
?>
 
Bei MySQL als DB-System ginge:

PHP:
if($mysql_num_rows($result) == 0){

Ich würde aber vorher auch noch testen, ob $result überhaupt einen Inhalt hat.

PHP:
if( $result != false) {
if($mysql_num_rows($result) == 0){

Denn wenn das Statement mal fehlschlägt (z.B. wenn die DB nicht erreichbar ist), dann käme es hier zu zusätzlichen Fehlermeldungen.
 
Zurück