Variablen werden nicht übergeben

LiVe

Mitglied
Hallo Jungs ich hoffe ihr könnt mir bei diesen Problem weiter helfen ich bekomme folgende Fehler Meldung


Notice: Undefined variable: auser in /var/www/web1/html/test/admin.action.php on line 42
und hier die admin.action.php

PHP:
<?php 
session_start (); 
error_reporting(E_ALL);
// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ("localhost", "*****", "****"); 
if (!mysql_select_db ("****", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 
if (!isset ($_SESSION["tt_user_id"])) // prüft ob die user ip vorhanden ist
{ 
$test = "0";
 } else { 
if (!isset ($_SESSION["tt_user_sid"])) // prüft ob die sessions id gültig ist
{ 
$test = "0";
 } else { 
$test = "1";
	}  
}   switch ($test) {
    case 0:
        break;        
    case 1:
       $sql = sprintf("SELECT                        
						   Id, 
                           user_admin_right
                        FROM
                           benutzerdaten
                        WHERE
 					 ID='".$_SESSION["tt_user_id"]."';"); // fragt die session id ab
				 $result = mysql_query($sql) OR die(mysql_error());      
			if(mysql_num_rows($result)) { // prüt ob sql eintrag vorhanden ist
       		   while($row = mysql_fetch_assoc($result)) {
           $auser  = $row['user_admin_right']; // rechte aus der datenbank auslessen
	}  
} else { 
	    	$auser  = "0"; // wen user keine rechte hat
  } break;
   }


 switch ($auser) {
    case 0:
        echo "<p>Admin Nein  </p>";
        break;        
    case 800:
        echo "<p>Admin Ja</p>";
break;
 }
?>



Ich hoffe ihr könnt mir helfen warum dieser fehlet auftritt ich bedanke mich schon mal für eure Hilfe


MFG
LiVe
 
Hi,

ganz einfach, wenn

Code:
if (!isset ($_SESSION["tt_user_id"]))

diese Bedingung zutrifft wird im $test auf 0 gesetzt. In Nachfolgendem switch wird bei 0 die Variable $auser jedoch nicht deklariert. Somit kann in Zeile 42 der switch in dem Fall auch ncith funktionieren.

Zwei Lösungswege:
1. gute Lösung: definiere $auser auch im falle von $test = 0
2. ändere das error reporting :rolleyes: (<- bitte nicht machen! nur ein joke!)

Gruß
 
ja das $test ist ja dafür da das er ja die sql abfrage nur startet wen die Session aktiv ist wie kann ich das probleme den lösen?
 
ich würds so machen:

*schnipp*
Code:
}   switch ($test) {
    case 0:
        $auser  = "0"; // wen user keine rechte hat <<-- das ist neu :)
        break;        
    case 1:
       $sql = sprintf("SELECT

allerdings finde ich das ganze etwas umständlich. Schon mal daran gedacht das alles in eine einfache klasse zu packen?

Gruß
 
Hi,

also das würde damit anfangen, dass ich mich nicht auf IP Adressen verlassen werden. Durch Proxy's und Firmengateways kommt eine IP zu oft im Internet vor. Danach würde ich wie gesagt alles in eine Klasse packen. Benutzer sind ja im Prinzip Objekte... Die Klasse bekommt dann funktionen die alle Aufgaben der Benutzerverwaltung aufsplitten und damit generisch einsetzbar machen.

Gruß
 
Zurück