PHP-Login Problem

Hallo!

Bei folgendem Quelltext bekomme ich immer 2 Fehlermeldungen

  1. Notice: Undefined index: page in C:\xampp\htdocs\login_profi\index.php on line 7

2.Notice: Undefined index: uid in C:\xampp\htdocs\login_profi\index.php on line 45

Ich glaube das sind 2 mal die gleichen Fehler…
Hier der Quellcode:

<?php session_start();
mysql\_pconnect("localhost","root",""); mysql\_select\_db("news\_system"); $page = $\_GET['page']; ?\>news system News System <?php if ( !$page ){
$page = "home"; } include("pages/$page.php"); ?\> <?php if ( $_SESSION['uid']){
?\>[Login](?page=Login) <?php }else{
?\>[Logout](?page=Logout) <?php }
?\> Danke schon mal!

if ( $_SESSION[‚uid‘]){

hmm bist du dir sicher das es uid überhaupt gibt ?

tu mal
if ( isset($_SESSION[‚uid‘]) )

Hi,

  1. Notice: Undefined index: page in
    C:\xampp\htdocs\login_profi\index.php on line 7

2.Notice: Undefined index: uid in
C:\xampp\htdocs\login_profi\index.php on line 45

Beide Fehlermeldungen kommen nur wenn die entsprechenden Indexes nicht gesetzt sind. Bei $_GET[‚page‘] zum Beispiel nur wenn der Parameter in der URL nicht übergeben wurde. Umgehen kannst du das indem du abfragst ob der Index gesetzt ist:
if (isset($_GET[‚page‘])) {
$page = $_GET[‚page‘];
} else {
$page = ‚home‘;
}

Das ist allerdings nur ein Notice den man nicht unbedingt beachten muss. Abschalten kann man diese Notice Meldungen indem man ‚error_reporting‘ auf ‚E_ALL & ~E_NOTICE‘ dann werden alle Fehler außer E_NOTICE gemeldet.

Pass aber bei dieser Konstruktion mit $page auf. In $_GET[‚page‘] kann der Besucher mitgeben was er möchte und nicht nur das was du erwartest. Wenn du jetzt mit der Variable einen Include machst, zum Beispiel so
include($page.’.php’);
kann ein Besucher hier eine beliebige Datei includieren. Damit wirst du sehr schnell gehackt. Zum Beispiel über einen RFI-Angriff: http://de.wikipedia.org/wiki/Remote_File_Inclusion

Frage also vorher unbedingt ab, ob in der Variable auch ein von dir erwarteter Wert steht.

Viele Grüße,
John Wart

Hat alles super geklappt. Alle Fehlermeldungen weg!!! Danke… ABER jetzt habe ich auf der nächsten Seite gleich das nächste Problem: Ich bekomme folgende Fehlermeldung:
Parse error: syntax error, unexpected T_ECHO, expecting ‚,‘ or ‚;‘ in C:\xampp\htdocs\login_profi\pages\Login.php on line 76

Ich habe bei den echos geguckt, kann aber keinen Fehler finden…

Hier der Quellcode:

<?php if(!$_SESSION['uid']){
if (!$\_POST['submit']){ ?\> Username Passwort: <?php }else{
$username = $\_POST['username']; $password =md5($\_POST['password']); $errors = array(); if ( !$username) { $errors[1] = "You did not supply a username!"; } if (!$password){ $errors[2] = "You did not supply a password!"; } $sql = "SELECT \* FROM `users` WHERE `name` ='$username'"; $res = mysql\_query ($sql) or die (mysql\_error()); $exists = mysql\_num\_rows($res); if ( $exists == 0){ $error[3] = "The username does not exist"; }else{ $sql = "SELECT \* FROM `users` WHERE `name` ='$username' AND `password`='$password'"; $res = mysql\_query ($sql) or die (mysql\_error()); $exists = mysql\_num\_rows($res); if ( $exists == 0){ $error[4] = "The username and password dod not match"; } } if ( count ($errors) \>0 ) { echo " "; foreach ($errors as $error){ echo " "; echo $error; echo " "; } echo " "; } else{ $sql = "SELECT \* FROM `users` WHERE `name` ='$username' AND `password`='$password'"; $res = mysql\_query ($sql) or die (mysql\_error()); $res = mysql\_fetch\_assoc($res); $\_SESSION['uid'] = $res ['user\_id']; echo "YOU have succesfully locked in!!!"; } } }else{ echo "You are already logged in!"; include ("pages/home.php"); } ?\> Danke

Bei mir ist der Fehler nicht vorhanden .

Hast du vielleicht irgentwo steuerzeichen drinne ?

Nein…das wars nicht… hatte die Datei Login.php als login.php gespeichert -.-

Noch eine Frage: Woher kriege ich dies Rückwärtsgerichteten Anführungszeichen(Backquotes). Auf meiner Tastaur sind die nicht oder?
Danke

Noch eine Frage: Woher kriege ich dies Rückwärtsgerichteten
Anführungszeichen(Backquotes). Auf meiner Tastaur sind die
nicht oder?
Danke

SHIFT ´

SHIFT und dann links neben der DEL (