Hilfe für Fehlerabfang gesucht

Hi @ all!

Ich hab ein LogIn-Script gebastelt was auch hervorragend funktioniert, die Eingabefehler des Users fängt er auch wunderbar ab (also bis jetzt, ob er überhaupt was eingegeben hat). Nur möchte ich, das er die Fehler-Strings (also z.B. "Passwort nicht eingegeben" oder "Nick nicht eingegeben") auf einer neuen Seite ausgibt, und nicht unter dem LogIn-Formular. Anbei hab ich mal das Script angehängt. Wär schön, wenn da einer helfen könnte!

Achso, das ist jetzt nicht direkt der LogIn, das ist die Registrierung eines neuen Users...



PHP:
<?php
require("connect.inc.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Neuen Benutzer anlegen</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>

<form action="" method="post">
<table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center">
<tr>
<td bgcolor="#e7e7e7" align="center" colspan="2">
<b>Neuen Benutzer anlegen</b>
</td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">Vorname*</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="name" class="input"></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">Nachname*</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="surname" class="input"></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">Nickname*</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="nickname" class="input"></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">Passwort*</td>
<td width="230" bgcolor="#ffffff"><input type="password" name="password" class="input"></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">Passwort wiederholen*</td>
<td width="230" bgcolor="#ffffff"><input type="password" name="password2" class="input"></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">Handy</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="mobile" class="input"></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">EMail*</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="mail" class="input"></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">ICQ-Nummer</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="icq" class="input"></td>
</tr>

<tr>
  <td bgcolor="#e7e7e7" align="center"><div align="left">Schule</div></td>
  <td bgcolor="#e7e7e7" align="center"><div align="left">
    <select name="school_short" id="school_short">
      <option value="BS">GS Baltic</option>
	  <option value="GB">GS Borwin</option>
	  <option value="CJ">...</option>
	  <option value="GD">...</option>
	  <option value="EG">...</option>
	  <option value="EB">...</option>
      <option value="GO">...</option>
	  <option value="SS">...</option>
	  <option value="HW">...</option>
	  <option value="KK">...</option>
	  <option value="KG">...</option>
	  <option value="GL">...</option>
	  <option value="OG">...</option>
	  <option value="GR">...</option>
	  <option value="GS">...</option>
	  <option value="SJ">...</option>
	  <option value="TG">...</option>
    </select>
  </div></td>
</tr>
<tr>
<td bgcolor="#e7e7e7" align="center" colspan="2">
<input type="submit" name="submit" value="Registrieren" class="button"><img src="fill.gif" width="20"> 
<input name="SetBack" type="reset" id="SetBack" value="Zur&uuml;cksetzen">
</td>
</tr>
<tr>
</tr>
</table>
</form>
<?php

if(isset($_POST['submit'])) { 	
		
		switch ($school_short) 
		{
		case "BS":
				$school = "...";
				break;
		case "GB":
				$school = "...";
				break;
		case "CJ":
				$school = "...";
				break;
		case "GD":
				$school = "...";
				break;
		case "EG":
				$school = "...";
				break;
		case "EB":
				$school = "...";
				break;
		case "GO":
				$school = "...";
				break;
		case "SS":
				$school = "...";
				break;
		case "HW":
				$school = "...";
				break;
		case "KK":
				$school = "...";
				break;
		case "KG":
				$school = "...";
				break;
		case "GL":
				$school = "...";
				break;
		case "OG":
				$school = "...";
				break;
		case "GR":
				$school = "...";
				break;
		case "GS":
				$school = "...";
				break;
		case "SJ":
				$school = "...";
				break;
		case "TG":
				$school = "...";
				break;
		}
		


		if($_POST['name'] == "") {
			$error = $error." Vorname eingeben";
		}

		if($_POST['surname'] == ""){
			$error = $error." Nachname eingeben";
		}
		
		if($_POST['nickname'] == ""){
			$error = $error." Nickname eingeben";
		}
		
		if($_POST['mail'] == ""){
			$error = $error." EMail eingeben";
		}
		
		if($_POST['password'] == "") {
			$error = $error." Passwort eingeben";
		}
		
		if($_POST['password'] != $_POST['password2']) {
			$error = $error." Die Passwörter stimmen nicht überein";
		}

		if(isset($error)) 
		{
			echo '<form action="javascript:onLoad=parent.location.go(-1)" method="post">';
			echo '<p align="center">'.$error.'<br><br>';
			echo '<input type="hidden" name="name" value="'.$_POST['name'].'">';
			echo '<input type="hidden" name="surname" value="'.$_POST['surname'].'">';
			echo '<input type="hidden" name="nickname" value="'.$_POST['nickname'].'">';
			echo '<input type="hidden" name="mobile" value="'.$_POST['mobile'].'">';
			echo '<input type="hidden" name="mail" value="'.$_POST['mail'].'">';
			echo '<input type="hidden" name="icq" value="'.$_POST['icq'].'">';
//			echo '<input type="submit" name="zurueck" value="Zurück" onClick="parent.history.go(-1)"></p>';
			echo '</form>';
			echo '<a href="javascript:onClick=parent.history.go(-1)">zurück</a>';
		}
		
		
		if(!isset($error)) {
			
			$query = @mysql_query("SELECT nickname FROM users WHERE nickname = '".$_POST['nickname']."'");
			$result = @mysql_fetch_array($query);
				if($_POST['nickname'] == $result['nickname']) {
					echo '<p align="center">Nickname existiert bereits!<br><br><a href="neu.php">Zurück</a></p>';
					die;
				}
		
				else{
					//$nickname = $_POST['nickname'];
					$password = md5($_POST['password']);
					//$school = $_POST['school'];
					if($insert = @mysql_query("INSERT INTO `users` (`id`, `nickname`, `surname`, `name`,  `password`, `school_short`, `school`, `mail`, `mobile`, `icq`) VALUES ('', '$nickname', '$surname', '$name',  '$password', '$school_short', '$school', '$mail', '$mobile', '$icq')")) {
						echo '<p align="center">Erfolgreich angemeldet!<br><br><a href="sichere_seite_'.$school_short.'.php">Zu deiner Schulseite</a></p>';
					}	
					else {
						echo '<p align="center">Beim Registrieren trat leider ein Fehler auf!<br><br><a	href="neu.php">Zurück</a></p>';
					}
				}
		}
}
?>
</body>
</html>
 
Dann musst Du den PHP-Code zur Überprüfung der Daten über die Ausgabe des HTML-Codes setzen und im Fehlerfall anderen HTML-Code ausgeben und danach abbrechen. Somit wird der HTML-Code für das Formular nicht gesendet und es sieht so aus, als ob die Fehlermeldung auf "einer neuen Seite" erscheint.

snuu
 
Ja, wie jetzt?!
Wie wärs, wenn du einfach nur den Fehler ausgibst und nicht noch das ganze Formular:

PHP:
<?php 
require("connect.inc.php"); 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<title>Neuen Benutzer anlegen</title> 
<link rel="stylesheet" type="text/css" href="style.css"> 
</head> 
<body> 
<?php 

if(isset($_POST['submit'])) {      
         
        switch ($school_short) 
        { 
        case "BS": 
                $school = "..."; 
                break; 
        case "GB": 
                $school = "..."; 
                break; 
        case "CJ": 
                $school = "..."; 
                break; 
        case "GD": 
                $school = "..."; 
                break; 
        case "EG": 
                $school = "..."; 
                break; 
        case "EB": 
                $school = "..."; 
                break; 
        case "GO": 
                $school = "..."; 
                break; 
        case "SS": 
                $school = "..."; 
                break; 
        case "HW": 
                $school = "..."; 
                break; 
        case "KK": 
                $school = "..."; 
                break; 
        case "KG": 
                $school = "..."; 
                break; 
        case "GL": 
                $school = "..."; 
                break; 
        case "OG": 
                $school = "..."; 
                break; 
        case "GR": 
                $school = "..."; 
                break; 
        case "GS": 
                $school = "..."; 
                break; 
        case "SJ": 
                $school = "..."; 
                break; 
        case "TG": 
                $school = "..."; 
                break; 
        } 
         


        if($_POST['name'] == "") { 
            $error = $error." Vorname eingeben"; 
        } 

        if($_POST['surname'] == ""){ 
            $error = $error." Nachname eingeben"; 
        } 
         
        if($_POST['nickname'] == ""){ 
            $error = $error." Nickname eingeben"; 
        } 
         
        if($_POST['mail'] == ""){ 
            $error = $error." EMail eingeben"; 
        } 
         
        if($_POST['password'] == "") { 
            $error = $error." Passwort eingeben"; 
        } 
         
        if($_POST['password'] != $_POST['password2']) { 
            $error = $error." Die Passwörter stimmen nicht überein"; 
        } 

        if(isset($error)) 
        { 
            echo '<form action="java script:onLoad=parent.location.go(-1)" method="post">'; 
            echo '<p align="center">'.$error.'<br><br>'; 
            echo '<input type="hidden" name="name" value="'.$_POST['name'].'">'; 
            echo '<input type="hidden" name="surname" value="'.$_POST['surname'].'">'; 
            echo '<input type="hidden" name="nickname" value="'.$_POST['nickname'].'">'; 
            echo '<input type="hidden" name="mobile" value="'.$_POST['mobile'].'">'; 
            echo '<input type="hidden" name="mail" value="'.$_POST['mail'].'">'; 
            echo '<input type="hidden" name="icq" value="'.$_POST['icq'].'">'; 
//            echo '<input type="submit" name="zurueck" value="Zurück" onClick="parent.history.go(-1)"></p>'; 
            echo '</form>'; 
            echo '<a href="java script:onClick=parent.history.go(-1)">zurück</a>'; 
        } 
         
         
        if(!isset($error)) { 
             
            $query = @mysql_query("SELECT nickname FROM users WHERE nickname = '".$_POST['nickname']."'"); 
            $result = @mysql_fetch_array($query); 
                if($_POST['nickname'] == $result['nickname']) { 
                    echo '<p align="center">Nickname existiert bereits!<br><br><a href="neu.php">Zurück</a></p>'; 
                    die; 
                } 
         
                else{ 
                    //$nickname = $_POST['nickname']; 
                    $password = md5($_POST['password']); 
                    //$school = $_POST['school']; 
                    if($insert = @mysql_query("INSERT INTO `users` (`id`, `nickname`, `surname`, `name`,  `password`, `school_short`, `school`, `mail`, `mobile`, `icq`) VALUES ('', '$nickname', '$surname', '$name',  '$password', '$school_short', '$school', '$mail', '$mobile', '$icq')")) { 
                        echo '<p align="center">Erfolgreich angemeldet!<br><br><a href="sichere_seite_'.$school_short.'.php">Zu deiner Schulseite</a></p>'; 
                    }     
                    else { 
                        echo '<p align="center">Beim Registrieren trat leider ein Fehler auf!<br><br><a    href="neu.php">Zurück</a></p>'; 
                    } 
                } 
        } 
} else {
?>
<form action="" method="post"> 
<table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center"> 
<tr> 
<td bgcolor="#e7e7e7" align="center" colspan="2"> 
<b>Neuen Benutzer anlegen</b> 
</td> 
</tr> 

<tr> 
<td width="170" bgcolor="#e7e7e7">Vorname*</td> 
<td width="230" bgcolor="#ffffff"><input type="text" name="name" class="input"></td> 
</tr> 

<tr> 
<td width="170" bgcolor="#e7e7e7">Nachname*</td> 
<td width="230" bgcolor="#ffffff"><input type="text" name="surname" class="input"></td> 
</tr> 

<tr> 
<td width="170" bgcolor="#e7e7e7">Nickname*</td> 
<td width="230" bgcolor="#ffffff"><input type="text" name="nickname" class="input"></td> 
</tr> 

<tr> 
<td width="170" bgcolor="#e7e7e7">Passwort*</td> 
<td width="230" bgcolor="#ffffff"><input type="password" name="password" class="input"></td> 
</tr> 

<tr> 
<td width="170" bgcolor="#e7e7e7">Passwort wiederholen*</td> 
<td width="230" bgcolor="#ffffff"><input type="password" name="password2" class="input"></td> 
</tr> 

<tr> 
<td width="170" bgcolor="#e7e7e7">Handy</td> 
<td width="230" bgcolor="#ffffff"><input type="text" name="mobile" class="input"></td> 
</tr> 

<tr> 
<td width="170" bgcolor="#e7e7e7">EMail*</td> 
<td width="230" bgcolor="#ffffff"><input type="text" name="mail" class="input"></td> 
</tr> 

<tr> 
<td width="170" bgcolor="#e7e7e7">ICQ-Nummer</td> 
<td width="230" bgcolor="#ffffff"><input type="text" name="icq" class="input"></td> 
</tr> 

<tr> 
  <td bgcolor="#e7e7e7" align="center"><div align="left">Schule</div></td> 
  <td bgcolor="#e7e7e7" align="center"><div align="left"> 
    <select name="school_short" id="school_short"> 
      <option value="BS">GS Baltic</option> 
      <option value="GB">GS Borwin</option> 
      <option value="CJ">...</option> 
      <option value="GD">...</option> 
      <option value="EG">...</option> 
      <option value="EB">...</option> 
      <option value="GO">...</option> 
      <option value="SS">...</option> 
      <option value="HW">...</option> 
      <option value="KK">...</option> 
      <option value="KG">...</option> 
      <option value="GL">...</option> 
      <option value="OG">...</option> 
      <option value="GR">...</option> 
      <option value="GS">...</option> 
      <option value="SJ">...</option> 
      <option value="TG">...</option> 
    </select> 
  </div></td> 
</tr> 
<tr> 
<td bgcolor="#e7e7e7" align="center" colspan="2"> 
<input type="submit" name="submit" value="Registrieren" class="button"><img src="fill.gif" width="20"> 
<input name="SetBack" type="reset" id="SetBack" value="Zur&uuml;cksetzen"> 
</td> 
</tr> 
<tr> 
</tr> 
</table> 
</form> 
<?php
}
?> 
</body> 
</html>
 
ja, fiel mir grad noch ne frage ein:

Ich speicher die registrierung ja in ner datenbank. Jetzt hab ich noch was gecoded, womit der eingeloggte User seine eigenen daten verändern kann. dafür hab ich das Registrierungsformular nur etwas umgebaut. Jetzt hab ich aber das Problem das er die neuen daten in nem neuen datensatz speichert. ich hab 'id' als primärschlüssel gesetzt und dachte dann an folgendes, damit er es in die richtige ID einspeichert:

PHP:
<?php
require("connect.inc.php");
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Profil bearbeiten</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<?php

echo '<a href="sichere_seite_'.$_SESSION['school_short'].'.php">Zurück zur Schulseite</a>';

if(isset($_POST['submit'])) { 	
		
		switch ($school_short) 
        { 
        case "BS": 
                $school = "..."; 
                break; 
        case "GB": 
                $school = "..."; 
                break; 
        case "CJ": 
                $school = "..."; 
                break; 
        case "GD": 
                $school = "..."; 
                break; 
        case "EG": 
                $school = "..."; 
                break; 
        case "EB": 
                $school = "..."; 
                break; 
        case "GO": 
                $school = "..."; 
                break; 
        case "SS": 
                $school = "..."; 
                break; 
        case "HW": 
                $school = "..."; 
                break; 
        case "KK": 
                $school = "..."; 
                break; 
        case "KG": 
                $school = "..."; 
                break; 
        case "GL": 
                $school = "..."; 
                break; 
        case "OG": 
                $school = "..."; 
                break; 
        case "GR": 
                $school = "..."; 
                break; 
        case "GS": 
                $school = "..."; 
                break; 
        case "SJ": 
                $school = "..."; 
                break; 
        case "TG": 
                $school = "..."; 
                break; 
        } 

		


		if($_POST['name'] == "") {
			$error = $error." Vorname eingeben";
		}

		if($_POST['surname'] == ""){
			$error = $error." Nachname eingeben";
		}
		
		if($_POST['nickname'] == ""){
			$error = $error." Nickname eingeben";
		}
		
		if($_POST['mail'] == ""){
			$error = $error." EMail eingeben";
		}
		
/*		if($_POST['password'] == "") {
//			$error = $error." Passwort eingeben";
*/		}
		
		if($_POST['password'] != $_POST['password2']) {
			$error = $error." Die Passwörter stimmen nicht überein";
		}

		if(isset($error)) 
		{
			echo '<form action="javascript:onLoad=parent.location.go(-1)" method="post">';
			echo '<p align="center">'.$error.'<br><br>';
			echo '<input type="hidden" name="name" value="'.$_POST['name'].'">';
			echo '<input type="hidden" name="surname" value="'.$_POST['surname'].'">';
			echo '<input type="hidden" name="nickname" value="'.$_POST['nickname'].'">';
			echo '<input type="hidden" name="mobile" value="'.$_POST['mobile'].'">';
			echo '<input type="hidden" name="mail" value="'.$_POST['mail'].'">';
			echo '<input type="hidden" name="icq" value="'.$_POST['icq'].'">';
//			echo '<input type="submit" name="zurueck" value="Zurück" onClick="parent.history.go(-1)"></p>';
			echo '</form>';
			echo '<a href="javascript:onClick=parent.history.go(-1)">zurück</a>';
		}
		
		
		if(!isset($error)) {
			
//			$query = @mysql_query("SELECT id, nickname, password, surname, name, school_short, school, mail, mobile, icq FROM users WHERE nickname = '".$_POST['nickname']."'");
//			$result = @mysql_fetch_array($query);
//			$query = @mysql_query("SELECT id FROM users");
//			$result = @mysql_fetch_array($query);			
//				if($_POST['nickname'] == $result['nickname']) {
//					echo '<p align="center">Nickname existiert bereits!<br><br><a href="neu.php">Zurück</a></p>';
//					die;
//				}

//				else{
					//$nickname = $_POST['nickname'];
					$password = md5($_POST['password']);
					//$school = $_POST['school'];
					if($insert = @mysql_query("INSERT INTO `users` (`id`, `nickname`, `surname`, `name`,  `password`, `school_short`, `school`, `mail`, `mobile`, `icq`) VALUES ('".$_SESSION['id']."', '$nickname', '$surname', '$name',  '$password', '$school_short', '$school', '$mail', '$mobile', '$icq')")) {
						session_register("id", "surname", "nickname", "name",  "school_short", "school", "mail", "mobile", "icq");
						echo '<p align="center">Erfolgreich geändert!<br><br><a href="sichere_seite_'.$result['school_short'].'.php">Zu deiner Schulseite</a></p>';
					}	
					else {
						echo '<p align="center">Beim Ändern trat leider ein Fehler auf!<br><br><a href="neu.php">Zurück</a></p>';
					}
//				}
		}
} else {
?>
<form action="" method="post">
<table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center">
<tr>
<td bgcolor="#e7e7e7" align="center" colspan="2">
<b>Profil bearbeiten</b>
</td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">Vorname</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="name" class="input" <?php echo ' value="'.$_SESSION['name'].'" '; ?>></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">Nachname</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="surname" class="input" <?php echo ' value="'.$_SESSION['surname'].'" '; ?>></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">Nickname</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="nickname" class="input" <?php echo ' value="'.$_SESSION['nickname'].'" '; ?>></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">Passwort ändern</td>
<td width="230" bgcolor="#ffffff"><input type="password" name="password" class="input" ></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">Passwort wiederholen</td>
<td width="230" bgcolor="#ffffff"><input type="password" name="password2" class="input"></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">Handy</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="mobile" class="input" <?php echo ' value="'.$_SESSION['mobile'].'" '; ?>></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">EMail</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="mail" class="input" <?php echo ' value="'.$_SESSION['mail'].'" '; ?>></td>
</tr>

<tr>
<td width="170" bgcolor="#e7e7e7">ICQ-Nummer</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="icq" class="input" <?php echo ' value="'.$_SESSION['icq'].'" '; ?>></td>
</tr>

<tr>
  <td bgcolor="#e7e7e7" align="center"><div align="left">Schule</div></td>
  <td bgcolor="#e7e7e7" align="center"><div align="left">
    <select name="school_short" id="school_short" <?php echo ' OnFocus="'.$_SESSION['school_short'].'" '; ?>>
      <option value="BS">...</option>
      <option value="GB">...</option> 
      <option value="CJ">...</option> 
      <option value="GD">...</option> 
      <option value="EG">...</option> 
      <option value="EB">...</option> 
      <option value="GO">...</option> 
      <option value="SS">...</option> 
      <option value="HW">...</option> 
      <option value="KK">...</option> 
      <option value="KG">...</option> 
      <option value="GL">...</option> 
      <option value="OG">...</option> 
      <option value="GR">...</option> 
      <option value="GS">...</option> 
      <option value="SJ">...</option> 
      <option value="TG">...</option> 
    </select>
  </div></td>
</tr>
<tr>
<td bgcolor="#e7e7e7" align="center" colspan="2">
<input type="submit" name="submit" value="Ändern" class="button"><img src="fill.gif" width="20"> 
<input name="SetBack" type="reset" id="SetBack" value="Zur&uuml;cksetzen">
</td>
</tr>
<tr>
</tr>
</table>
</form>
<?php 
} 
?> 
</body>
</html>

Ausserdem funktionier das hier : <?php echo ' OnFocus="'.$_SESSION['school_short'].'" '; ?> auch noch nicht so richtig

Christoph
 
Zurück