Prob mit überprüfen

Headymaster

Erfahrenes Mitglied
Hallo!

Ich habe in meinem CMS einen Adminbereich.
Dort kann z.b. der jeweilige Admin sein Profil auslesen und dann editieren.
Das Prob ist nur.....das meine eingabeüberprüfungen irgendwie nicht hinhauen.
Ich werde immer weitergeleitet und alle überprüfungen werden übersprungen...

Hier der Code der profil.html:

HTML:
<html>
<head>
<link rel="stylesheet" media="screen" href="[css]">
<title>[title] - AdminPanel</title>
</head>
<body>
   <div align="center">
    <font color="[colorprof]"><b>[doneprof]</b></font>
     <form action="index.php?do=admin&op=profil" method="post">
      <table class="profil">
	     <tr>
		    <td class="profil"><b>Vorname*:</b></td>
		    <td class="profil"><input type="text" name="vname" value="[vname]" class="form"></td>
		 </tr>
		 <tr>
		    <td class="profil"><b>Nachname*:</b></td>
			<td class="profil"><input type="text" name="nname" value="[nname]" class="form"></td>
		 </tr>
		 <tr>
		    <td class="profil"><b>Passwort alt:</b></td>
			<td class="profil"><input type="password" name="pwold" class="form"></td>
		 </tr>
		 <tr>
		    <td class="profil"><b>Passwort neu:</b></td>
			<td class="profil"><input type="password" name="pwnew" class="form"></td>
		 </tr>
		 <tr>
		    <td class="profil"><b>wiederholen:</b></td>
			<td class="profil"><input type="password" name="pwnew2" class="form"></td>
		 </tr>
		 <tr>
		    <td class="profil"><b>eMail*:</b></td>
			<td class="profil"><input type="text" name="email" value="[email]" class="form"></td>
		 </tr>
	  </table>
	  <table class="profil">
		 <tr>
		    <td class="profil"><input type="submit" name="edit" value="edit" class="form"></td>
		 </tr>
	  </table>
	 </form>
   </div>
</body>
</html>

So und hier nun der Teil des Adminbereichs....der die Eingabe überprüfen soll, sobald der edit-Button geklickt wurde.

PHP:
<?php
// Profil
   if ($_GET['op'] == "profil")
   {
     $gettask = "SELECT * FROM admins WHERE id='".$_SESSION['user_id']."' AND vname='".$_SESSION['user_login']."'";
     $dogettask = mysql_query($gettask);
     $udata = mysql_fetch_array($dogettask);
     if(isset($_POST['edit']))
	 {
	   if(isset($_POST['vname']) && isset($_POST['nname']) && isset($_POST['email']))
	   {
	       if(isset($_POST['pwold']) or isset ($_POST['pwnew']) or isset($_POST['pwnew2']))
		   {
		      if(isset($_POST['pwold']) && isset ($_POST['pwnew']) && isset($_POST['pwnew2']))
			  {
			   echo "Hä was geht denn?!";
			  }
			  else
			  {
			    $coloprof = "#FF0000";
				$msgprof = "Um das Passwort zu ändern, füllen Sie bitte alle 3 Passwortfelder aus!";
				header("Location:index.php?do=admin&op=profil&colorprof=$colorprof&msgprof=$msgprof");
			  }
		   }
	   }
	   else
	   {
	      $colorprof = "#FF0000";
		  $msgprof = "Bitte füllen Sie alle Felder mit * aus!";
		  header("Location:index.php?do=admin&op=profil&colorprof=$colorprof&msgprof=$msgprof");
	   } 
	 }
	 else
	 {
     $workcontent = showtpl("admin/profil", array("Title" => "$title",
	                                              "CSS" => "$css",
												  "vname" => $udata['vname'],
												  "nname" => $udata['nname'],
												  "email" => $udata['email'],
												  "doneprof" => $_GET['msgprof'],
												  "colorprof" => $_GET['$colorprof']));
	 }
   }
?>

Würde mich sehr über Hilfe freuen.

MFG Niels
 
Das liegt daran, dass beim Absenden eines Formulars, alle Felder gesendet werden, auch wenn sie leer sind. Also wird auch ein entsprechender Eintrag im $_POST Array gemacht.

Benutz statt isset() lieber empty().
 
ah ok^^

Wieda ein Denkfehler...isset überprüft ja nur ob die Variable da ist und empty überprüft ob sie einen Inhalt hat oder nicht..... :)

Thx auf jeden Fall :)

MFG Niels
 
Aber habe noch ne Frage...und zwar werden meine Variablen um eine Ausgabe für den SUer sichtbar zu machen nicht weitergegeben.

So erstelle ich ja z.b. die Variablen $msgprof und $colorprof und hänge sie an eine Headerweiterleitung an, wenn die Felder mit * leer sind.

So beim tpl-Parser werden dann ja alle [blabla] sachen ersetzt...aber meine Nachricht wird nicht angezeigt.

Habe das im mom z.b. so:
PHP:
<?php
// Überprüfung
if(empty($_POST['vname']) or empty($_POST['nname']) or empty($_POST['email']))
	   {
	      $colorprof = "#FF0000";
		  $msgprof = "Bitte füllen Sie alle Felder mit * aus!";
		  header("Location:index.php?do=admin&op=profil&colorprof=$colorprof&msgprof=$msgprof");  
	   }

//Tpl-Parser
$workcontent = showtpl("admin/profil", array("Title" => "$title",
	                                              "CSS" => "$css",
												  "vname" => $udata['vname'],
												  "nname" => $udata['nname'],
												  "email" => $udata['email'],
												  "doneprof" => $_GET['msgprof'],
												  "colorprof" => $_GET['colorprof']));
?>
 
Zurück