IF-Schleife wird einfach übersprungen

icefire

Erfahrenes Mitglied
Hallo!

Folgendes Problem: Ich werte Daten aus einem Formular aus - nur komischerweise wenn die Daten falsch sind bricht das Skript nicht ab bzw zeigt nicht an das "exit" ausgeführt worden ist (in Form eines Links) - und ich weiss nicht, was ich hier falsch gemacht habe!

PHP:
<? 
//Daten aus dem Formular werden mit der DB verglichen

if ($_REQUEST["action"]==neu){	
	if($_POST[admin_name]==$data[admin_name]){
		$check = false; 		 
		echo("<tr><td class=\"text1\" bgcolor=\"".$bgcol3."\">".$alert1."</td></tr>");
		}else{$check = true;}			 
	if($check == false){
		echo("<tr><td class=\"text1\" bgcolor=\"".$bgcol3."\"><br>".$alert4."</td></tr>
			<tr><td align=\"center\"><a href=\"index.php?file=admins/new_admin\"><font size=\"-2\" face=\"Tahoma\"><br>Zurück!</font></a></td></tr>");
		echo("</table><br><br>");
		exit;}
// Hier sollte nun das Skript bei Fehlermeldung enden
// Es wird der Link "Zurück" nicht angezeigt

if($check == true){		
		$insert = "INSERT INTO admin_db (admin_name, admin_pass, admin_rights, admin_mail) VALUES (  
		'".addslashes(htmlspecialchars($_POST[admin_name]))."',
		MD5('".addslashes(htmlspecialchars($admin_pass))."'),
		'".addslashes(htmlspecialchars($_POST[admin_rights]))."',		
		'".addslashes(htmlspecialchars($_POST[admin_mail]))."')";
		echo mysql_error();
		mysql_query($insert, $verbindung) or die(mysql_error());

// Test wird trotz Fehlermeldung ausgegeben
echo("Ausgabetext bei erfolgreichem DB Eintrag....");

}}
?>

Ich bin im Moment total verwirrt und versteh nichts mehr - weiss jemand Rat?
 
Original geschrieben von icefire
PHP:
<? 
	if($_POST[admin_name]==$data[admin_name]){
?>

Wenn der Text ausgegeben wird, muss $check wohl TRUE sein. Standardmäßig ist die Variable aber FALSE, also muss diese IF-Abfrage zur ELSE-clause führen. Ich würde es mal mit " Anführungszeichen ausprobieren.
 
Verstehe ich jetzt nicht ganz!

Die Daten aus dem Formular werden abgeglichen das keine Nicks. Emails, usw. doppelt vergeben werden können. Deshalb die == bei der IF-Schleife. Ich habe auch schon mit != in der Schleife versucht und natürlich true/false vertauscht.
 
Wer sowas hier macht: --->if ($_REQUEST["action"]==neu ){<---

gehört für mich bestraft oder gibt es die Konstante "neu" in deinem Script denn entschuldige.

So und denn müssten doch eigentlich Fehlermedlungen kommen alleine weil deine Konstante ja evtl. gar nicht deklariert ist.

Und verstanden wo er nicht rein geht habe ich immer noch nicht ganz zeige mal genau die Passage wo er nicht rein geht.
 
[offtopic]
Es gibt keine If-Schleife!
[/offtopic]

Ist mir gar nicht aufgefallen. :-)

Naja egal ich habe mal deinen Snibbel jetzt mal ausprobiert und der funktioniert doch (hab jetzt auch im Kommentar gelesen was du wolltest :rolleyes: )

Du musst auch darauf achten das "Franz" nicht gleich "franz" ist außer du benutzt [phpf]strtoupper[/phpf] oder [phpf]strtolower[/phpf], weil denn wird der übergebene String ja entweder in klein oder in Großbuchtstaben konvertiert.

Hmm ich habe zwar nichts verändert ausßer das man deinen Code jetz auch lesen kann, aber hier isser nochma:
PHP:
$_POST['admin_name']='Hans';
	$data['admin_name']='Franz';	
	
	if($_POST[admin_name]==$data[admin_name])
	{
		$check = false;         
	    echo("<tr><td class=\"text1\" bgcolor=\"#f0f0f0\">Fehler</td></tr>");
	}
	else
	{
		$check = true;
	}            
	if($check == false)
	{
		echo("<tr><td class=\"text1\" bgcolor=\"".$bgcol3."\"><br>".$alert4."</td></tr>
	    <tr><td align=\"center\"><a href=\"index.php?file=admins/new_admin\"><font size=\"-2\" face=\"Tahoma\"><br>Zurück!</font></a></td></tr>");
	    echo("</table><br><br>");
	    exit;
	}

edit: Genauso solltest du Sonderzeichen wie -->'<---- oder --->$<---- mit [phpf]mysql_escape_string[/phpf] oder so escapen.
 
Tut mich steinigen aber als einfachen Ausdruck bzw. Abfrage sollte man statt:
if($check == false) lieber if(!$check) verwenden.
Musste einfach mal erwähnt werden.

In diesem Sinne
 
Original geschrieben von Krypthonas
Tut mich steinigen aber als einfachen Ausdruck bzw. Abfrage sollte man statt:
if($check == false) lieber if(!$check) verwenden.
Musste einfach mal erwähnt werden.

In diesem Sinne

[OT]Ich finde deine Schreibweise aber nicht gerade Pflegeleicht, da man das ! eher übersieht als ne Konstante... aber muss ja jeder für sich wissen.[/OT]
 
Die Daten kommen ja aus einem Formular und das sendet folgendes mit:

Code:
action=\"index.php?file=war/add_db&action=neu

Also kann man durchaus diese Variante wählen - zumal ich es hier aus dem Forum habe und damit mit den normalen Datenbankeinträgen keine Schwierigkeiten habe.

Ich werde alle Möglichkeiten mal ausprobieren - schon mal danke für eure Anregungen! :-)
 
Zurück