SmiteDeluxe: PHP error

Guten Tag,
ich habe das Problem das bei meine user.php ein server error kommt wenn ich die seite lade.
Ich würde mich über Hilfe sehr freuen.

user.php:

  
<?php  
session_start();  
if(isset($_SESSION["username"])) {  
?>  
<html>  
<head>  
	 <title></title>  
	 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
	 <link rel="stylesheet" href="css2.css" type="text/css"/>  
 </head>  
	 <body link="black" vlink="black" alink="black" font-size="10">  
		<header>  
		</header>  
		<div id="navi1"><h2>User online:  
		<?php  
$date = fopen("c.txt","r");  
        $counterstand = fgets($date, 10);  
		$counterstand++;  
         echo "$counterstand";  
          ?>  
		</h2></div>  
		<a href="index.html"><div id="navi"><h2>Home</h2></div></a>  
		<a href="pro0.html"><div id="navi"><h2>Programne</h2></div></a>  
		<a href="mc0.html"><div id="navi"><h2>Minecraft</h2></div></a>  
		<a href="hatu0.html"><div id="navi"><h2>Handytutorials</h2></div></a>  
		<a href="tu0.html"><div id="navi"><h2>Tutorials</h2></div></a>  
		<a href="üu0.html"><div id="navi"><h2>über uns</h2></div></a>  
		<a href="im0.html"><div id="navi"><h2>Impressum</h2></div></a>  
		 <a href="gb.php"><div id="navi"><h2>Gästebuch</h2></div></a>  
		  <a href="user.php"><div id="navi"><h2>Profil</h2></div></a><br>  
                </h2></div>  
		<div id="home">  
eingeloggt als <?php echo $_SESSION["username"]; ?></h1>  
<a href="logout.php">Ausloggen</a>  
		<h1><center><?php echo $_SESSION["username"]; ?></center></h1>  
		<h3>Infos</h3>  
  
<form action="user.php?page=2" method="post">  
Name:<input type="text" name="name" />  
Nachname:<input type="text" name="nachname" /><br>  
<h3>Guburtsdatum</h3>Tag:<input type="text" name="tag" /><br><imput type="text" name="." value="." /><br>Monat:<input type="text" name="monat" /><br> <input type="text" name="." value="." /><br> Jahr:<input type="text" name="jahr" /><br>  
Wohnort:<input type="text" name="wohnort" /><br>  
Bundesland:<input type="text" name="bundesland" /><br>  
Geschlecht:<input type="text" name="geschlecht" /><br>  
Land:<input type="text" name="land" /><br>  
Email:<input type="text" name="email" /><br>  
<input type="submit" name="Senden" />  
</form>  
<?php  
  
$verbindung = mysql_connect("localhost", "user", "passwort") or die (mysql_error());  
mysql_select_db("db") or die (mysql_error());  
  
if(isset($_GET["page"])) {  
	if($_GET["page"] == "2") {  
$name = $_POST["name"];  
$nachname = $_POST["nachname"];  
$geburtstag = $_POST["tag"];  
$geburtstag .= ".";  
$geburtstag .= $_POST["monat"];  
$geburtstag .= ".";  
$geburtstag .= $_POST["jahr"];  
$wohnort = $_POST["wohnort"];  
$bundesland = $_POST["bundesland"];  
$geschlecht = $_POST["geschlecht"];  
$land = $_POST["land"];  
$email = $_POST["email"];  
  
  
$passwort = md5($passwort);  
  
$result = mysql_query("SELECT id FROM user WHERE Email = '$email'");  
$menge = mysql_num_rows($result);  
  
if($menge == 0)  
    {  
   $eintrag = "INSERT INTO user (Name, Nachname, Geburtstag, Wohnort, Bundesland, Geschlecht, Land, Email)  
VALUES ('$name', '$nachname', '$geburtstag', '$wohnort', '$bundesland' ,'$geschlecht, '$land', '$email');  
  
  
$eintragen = mysql_query($eintrag);  
  
  
    if($eintragen == true)  
   {  
   echo 'Eintrag war erfolgreich';  
   }  
else  
{  
   echo 'Fehler beim Speichern';  
   }  
}  
else  
    {  
    echo 'Email schon vorhanden.';  
    }  
  
  
}  
?>  
		<h3>Passwort &auml;ndern</h3>  
		<?php  
		$eintrag = ("SELECT passwort FROM login WHERE email = '$_POST[mail]' AND user = '$_POST[user]'");  
  
		$eingabe = $_POST['mail'];  
		$eingabe2 = $_POST['user'];  
		$pw = row->passwort;  
  
		if ($_POST[button]) {  
  
		if(empty($eingabe))  
		{  
		$fehler = 'Bitte Email angeben !';  
		}  
		else  
		{  
		if(empty($eingabe2))  
		{  
		$fehler2 = 'Bitte Username angeben !';  
		}  
		else  
		{  
		$sender = "smited@web.de";  
		$empfaenger = $_POST[mail];  
		$betreff = "Neues Passwort";  
		$text = "Passwort: $pw  
		Du kannst dich unter http://www.smitedeluxe.de/login.php anmelden.";  
  
		mail($empfaenger, $betreff, $text, "From: $sender");  
  
		$ok = "Passwort wurde ges&auml;ndet";  
  
		} } }  
  
		?>  
  
  
		<?php echo $ok; ?>  
		<form action="" method="post">  
		Username: <input name="user" type="text" /><?php echo$fehler2; ?><br />  
		Email: <input name="mail" type="text" /><?php echo$fehler; ?><br />  
		<input name="button" type="submit" />  
		</form><br />  
		<?php $result = mysql_query("SELECT id, Name, Nachname, Wohnort, Geschlecht, Bundesland FROM user ORDER BY id ");  
while($row = mysql_fetch_object($result)) { ?>  
		<table border="1px">  
		<tr>  
		<th>Name</th>  
		<th>Nachname</th>  
		<th>Email</th>  
		<th>Wohnort</th>  
		<th>Straße</th>  
		</tr>  
		<tr>  
		<td><?php 	echo $row->Name ?>  
		<td>  
		<td>  
		<td>  
</body>  
</html>  
	</fieldset>  
	 </body>  
 </html>  
 <?php  
}  
 				mysql_close($verbindung);  
 	}  
} else {  
?>  
Bitte erst einloggen, <a href="login.php">hier</a>.  
<?php  
}  
?>  

  1. Dass du bei der detaillierten Problembeschreibung noch nicht selbst auf die Lösung gekommen bist...

    http://forum.de.selfhtml.org/hilfe/charta.htm

    1. Dass du bei der detaillierten Problembeschreibung noch nicht selbst auf die Lösung gekommen bist...

      http://forum.de.selfhtml.org/hilfe/charta.htm

      wie bitte?

      1. Hallo,

        Dass du bei der detaillierten Problembeschreibung noch nicht selbst auf die Lösung gekommen bist...
        http://forum.de.selfhtml.org/hilfe/charta.htm
        wie bitte?

        vermutlich möchte 1UnitedPower dir klarmachen, dass er nicht bereit ist, sich durch einen Haufen Code zu wühlen, ohne dass du wenigstens erkennbar _versucht_ hast, den Fehler zu finden, und ihn auch nicht einmal eindeutig beschreibst.

        Ciao,
         Martin

        --
        Es gibt Tage, da gelingt einem einfach alles.
        Aber das ist kein Grund zur Sorge; das geht vorbei.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Hallo,

    ich habe das Problem das bei meine user.php ein server error kommt wenn ich die seite lade.

    meinst du einen Parse Error von PHP, oder einen HTTP-Status 500 (Internal Server Error)? Ich vermute ersteres.

    if($menge == 0)

    {
       $eintrag = "INSERT INTO user (Name, Nachname, Geburtstag, Wohnort, Bundesland, Geschlecht, Land, Email)
    VALUES ('$name', '$nachname', '$geburtstag', '$wohnort', '$bundesland' ,'$geschlecht, '$land', '$email');

      
    Zähl in diesem Statement mal die Anführungzeichen.  
    Tipp: Normalerweise sollten sie paarweise auftreten.  
    Mir ist es aufgefallen, weil genau ab dieser Zeile das Syntax Highlighting nicht mehr stimmte.  
      
    Davon abgesehen finde ich deinen Code recht unübersichtlich; ich bin sicher, dass man das etwas besser strukturieren könnte. Für den Überblick wären angemessene Einrückungen schon sehr hilfreich.  
      
    Noch ein paar Anmerkungen am Rande ...  
      
    
    > ~~~html
    
    <?php  
    
    > session_start();  
    > if(isset($_SESSION["username"])) {  
    > ?>  
    > <html>  
    > <head>
    
    

    DOCTYPE fehlt.

     <title></title>  
    

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" href="css2.css" type="text/css"/>
    </head>

      
    Der einzige DOCTYPE, der hier passen würde, wäre XHTML Transitional.  
      
    
    > `	 <body link="black" vlink="black" alink="black" font-size="10">`{:.language-html}  
      
    Warum stehen diese Attribute im Markup? Die dazu äquivalenten Angaben gehören eigentlich ins Stylesheet!  
      
    
    > ~~~html
    
    		<header>  
    
    > 		</header>
    
    

    Ah, wohl doch kein XHTML, sondern HTML 5.

    echo "$counterstand";

    Wozu eine Variable einzeln in einen String einfassen? Habe ich noch nie verstanden, warum das so viele PHP-Programmierer tun.

    	<a href="index.html"><div id="navi"><h2>Home</h2></div></a>  
    
      <a href="pro0.html"><div id="navi"><h2>Programne</h2></div></a>  
      <a href="mc0.html"><div id="navi"><h2>Minecraft</h2></div></a>  
      <a href="hatu0.html"><div id="navi"><h2>Handytutorials</h2></div></a>  
      <a href="tu0.html"><div id="navi"><h2>Tutorials</h2></div></a>  
      <a href="üu0.html"><div id="navi"><h2>über uns</h2></div></a>  
      <a href="im0.html"><div id="navi"><h2>Impressum</h2></div></a>  
      <a href="gb.php"><div id="navi"><h2>Gästebuch</h2></div></a>  
      <a href="user.php"><div id="navi"><h2>Profil</h2></div></a><br>
    
      
    Fehler: a ist ein Inline-Element und darf keine Blockelemente enthalten (außer du schreibst \*wirklich\* HTML 5). Unabhängig davon sind die div-Elemente hier sinnlos. Und Umlaute in URLs möchte man tunlichst vermeiden!  
      
    
    >                 </h2></div>  
      
    Diese beiden Endtags haben kein zugehöriges Starttag, sie stehen verwaist in der Gegend rum.  
      
    
    > ~~~html
    
    		<div id="home">  
    
    > eingeloggt als <?php echo $_SESSION["username"]; ?></h1>
    
    

    Noch ein Verschachtelungsfehler: Erst ein div-Element öffnen, dann ein h1 schließen? Nicht wirklich, oder?

    $verbindung = mysql_connect("localhost", "user", "passwort") or die (mysql_error());

    mysql_select_db("db") or die (mysql_error());

      
    Besser als gar nicht auf Fehler zu reagieren, aber eine wirkliche Fehlerbehandlung ist die() nicht.  
      
    
    > ~~~php
    
    $name = $_POST["name"];  
    
    > $nachname = $_POST["nachname"];  
    > $geburtstag = $_POST["tag"];  
    > $geburtstag .= ".";  
    > $geburtstag .= $_POST["monat"];  
    > $geburtstag .= ".";  
    > $geburtstag .= $_POST["jahr"];  
    > $wohnort = $_POST["wohnort"];  
    > $bundesland = $_POST["bundesland"];  
    > $geschlecht = $_POST["geschlecht"];  
    > $land = $_POST["land"];  
    > $email = $_POST["email"];
    
    

    Wozu kopierst du das alles um?

    $result = mysql_query("SELECT id FROM user WHERE Email = '$email'");

    Böse Falle: Nie, NIEMALS Daten, die von außen kommen, ungeprüft ausgeben oder weitergeben. Man kann nicht alles auf Richtigkeit und Sinnhaftigkeit überprüfen, aber kontextspezifisch maskieren und escapen sollte man die Daten auf jeden Fall! In diesem Fall ist mysql_real_escape_string() angebracht.

    if($eintragen == true)

    "Wenn es wahr ist, dass $eintragen wahr ist, dann ..."
    Das klingt unbeholfen, oder? Und genauso unbeholfen ist die if-Anweisung hier. Die Funktion mysql_query() liefert
     * entweder false im Fehlerfall
     * oder true im Erfolgsfall bei manchen DB-Operationen (z.B. bei INSERT)
     * oder eine mySQL-Ressourcenkennung, die ungleich 0 ist.
    Also genügt hier ein einfaches

    if ($eintragen)

    was auch besser zu lesen ist. Es gibt andere Fälle, wo das Ergebnis im Gut-Fall auch 0 sein kann, dann muss man das vom booleschen false unterscheiden. In solchen Fällen ist dann der typsichere Vergleich (z.B. auf !==false) zu verwenden.

    <h3>Passwort &auml;ndern</h3>

    Warum verst&uuml;mmelst du die Umlaute? Das ist nicht sinnvoll, geschweige denn nötig.

    $eintrag = ("SELECT passwort FROM login WHERE email = '$_POST[mail]' AND user = '$_POST[user]'");

    Auch hier gibst du wieder von außen kommende Daten ungeprüft und unmaskiert an die DB weiter. Gefährlich!

    	$eingabe = $_POST['mail'];  
    
      $eingabe2 = $_POST['user'];
    
      
    Zum unsinnigen Umkopieren siehe oben.  
      
    
    > `		$ok = "Passwort wurde ges&auml;ndet";`{:.language-php}  
      
    Nochmal verstümmelte Umlaute. Außerdem: "gesändet"? Was ist das? Mit Sand überschüttet?  
      
    
    > ~~~html
    
    </body>  
    
    > </html>  
    > 	</fieldset>  
    > 	 </body>  
    >  </html>
    
    

    Was ist das für eine kaputte Schachtelung??

    So long,
     Martin

    --
    Schon gewusst, dass Aftershave trotz des Namens eigentlich eher fürs Gesicht gedacht ist?
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Om nah hoo pez nyeetz, Der Martin!

      Zum unsinnigen Umkopieren siehe oben.

      $ok = "Passwort wurde ges&auml;ndet";

      Nochmal verstümmelte Umlaute. Außerdem: "gesändet"? Was ist das? Mit Sand überschüttet?

      Durch unsinniges Umkopieren geschändet.

      Matthias

      --
      1/z ist kein Blatt Papier.