Id Definieren

Manuel324

Mitglied
Hallo

Auf meiner seite möchte ich ID 1 zur Default seite machen, also das es nicht das hier anzeigt.

Notice: Undefined index: id in /var/www/web3/html/index.php on line 10

In der Zeile 10 steht folgendes

PHP:
   $sql2 = "SELECT * FROM links WHERE id='$_GET[id]'";

und im ganzen

PHP:
<?php

	require_once ('config.php');
    $db_link = mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
   

    $db_sel = mysql_select_db( MYSQL_DATENBANK )
    or die("Auswahl der Datenbank fehlgeschlagen");
    
   $sql2 = "SELECT * FROM links WHERE id='$_GET[id]'";  
   $db_erg2 = mysql_query($sql2);
   $zeile = mysql_fetch_array($db_erg2);
   
?>

So das ist nicht das einzigste.

Notice: Undefined index: id in /var/www/web3/html/index.php on line 82

in Zeile 82 steht

PHP:
switch ($_GET['id']) {

und im Ganzen Script das mit der Zeile zusammenhängt

PHP:
<?php
switch ($_GET['id']) {
          case "home":
include"site/home.php";
break;

          case "aboutus":
include"site/aboutus.php";
break;

          case "contactus":
include"site/contactus.php";
break;

          case "impressum":
include"site/impressum.php";
break;

		  
};
?>

Ich würde mich über eine antwort freuen

Mit freundlichen Grüßen

Manuel
 
Hi,

wenn du ein default im switch benutzt, hast du auch die Fehlermeldung nicht mehr :D

PHP:
<?php
switch ($_GET['id']) {
          case "home":
include"site/home.php";
break;

          case "aboutus":
include"site/aboutus.php";
break;

          case "contactus":
include"site/contactus.php";
break;

          case "impressum":
include"site/impressum.php";
break;

default:
include "site/404.php.php";
break
          
};
?>

ist jetzt nur ein Beispiel, aber ich hoffe dasprinzip ist verständlich.
 
Hi ;)

Zuerst solltest du dich mit SQL-Injection beschäftigen, denn dein COde ist wie gescahffen dafür.

Dann zu deinem Code:

Wenn du willst, dass, wenn $_GET['id'] nicht definiert ist, 1 automatisch die ID ist, musst du das so machen, dass du am Anfang abfragst ob $_GET['id'] gesetzt ist und wenn nicht, den Defaultwert zuweist. Also so:

PHP:
if (!isset($_GET['id']))
 $id = 1;

Dementsprechend musst du die SQLabfrage umbauen.

€dit: Zu spät, aber meins behandelt den anderen Fehler ;-)
 
Ja, weis schon das des bisschen unsicher ist, aber wie mach ich das den sicher? indem ich die id durch einem namen ersetze?
 
Du könntest eine sogenannte White-List einsetzen, das kann zum Beispiel ein Array sein in dem alle Seiten aufgelistet sind, wenn du das zentral verwalten willst, kannst du das in einer Datenbank verwalten.

DIeses Array prüft jetzt, ob der übergebene Wert $_GET['id'] in dem Array vorkommt, wenn ja, dann ist der Wert sauber und es kann weitergearbeitet werden.
Wenn nicht, wird die weitere Ausführung des Skriptes mit einer Warnung verhindert.

Für dich sollte im Moment mysql_real_escape_string ausreichen.

Übrigens kann dein Skript nicht funktionieren, da du in Zeile 11 vermutlich einen Integerwert hast und eine Seite aus der Datenbank holst, in dem switch-Konstrukt ist aber id plötzlich ein string. Entweder oder, aber nicht beides.
 
Zuletzt bearbeitet:
Hallo,

Das könnte ich ja später noch machen, ich möchte vorerst mal eine homepage fertig bekommen.
Also wie gesagt, das ich eben eine Definierte Seite habe, die als start angezeigt wird.

In wie fern müsste ich den die ausgabe bearbeiten, das des als Startseite definiert wird?

Mfg

manuel
 
PHP:
<?php

    require_once ('config.php');
    $db_link = mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
   

    $db_sel = mysql_select_db( MYSQL_DATENBANK )
    or die("Auswahl der Datenbank fehlgeschlagen");

    if (!isset($_GET["id"]))
     $id = 1;
    else
     $id = $GET_["id"];
    
   $sql2 = "SELECT * FROM links WHERE id='".$id."'";  
   $db_erg2 = mysql_query($sql2);
   $zeile = mysql_fetch_array($db_erg2);
   
?>

Bei dem anderen dann genauso:
PHP:
<?php

    if (!isset($_GET["id"]))
     $id = 1;
    else
     $id = $GET_["id"];

switch ($id) {
          case "home":
include"site/home.php";
break;

          case "aboutus":
include"site/aboutus.php";
break;

          case "contactus":
include"site/contactus.php";
break;

          case "impressum":
include"site/impressum.php";
break;

          
};
?>

Wobei das wie gesagt nicht funktionieren kann, da es einmal ein Integerwert ist und dann auf einmal ein String.
 
Zuletzt bearbeitet:
Zurück