PHP Problem

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

Garfield12

Betreff: PHP Problem

BeitragSo, Aug 09, 2009 11:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,
ich hab mich nach langer Zeit mal wieder mit PHP und MySQL beschäftigt (Alsonciht nur mal Beispiele ausprobiert)
Und ich wollte ein Anmeldeformular erstellen.
Hier der Code:
Code: [AUSKLAPPEN]
<?

  include("mysql.inc");

 
 
function PostVar($variablen_name) {
  $ergebnis = $_POST[$variablen_name];
  if (get_magic_quotes_gpc()) $ergebnis = stripslashes($ergebnis);
  return trim($ergebnis);
}

 
 
 

  $angemeldet = "angemeldet";
    if ($angemeldet) {
    $name =  PostVar("name");
    $kennwort =  PostVar("Kennwort");
    $email = PostVar("eMail");
   $status = $_POST['status'];
}
$fehler = "";
if (!empty($status)) {
      if (empty($name)) $fehler .= "Der name ist leer.<br> ";
      if (empty($kennwort)) $fehler .= "Das kennwort ist leer.<br>";
      if (empty($email)) $fehler .= "Es wurde keine E-Mail angegeben.<br>";
  }
 
 
?>


<html>
<head>
<title>test - Neuen Account erstellen</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div align="center">
<h1>Erstellen sie jetzt einen neuen Account, gratis!</h1>
<p>Achtung mit einer Registrierung akzeptieren sie unsere <a href="agb.php">AGB</a>.</p>




<?
if ($fehler) echo "<p>$fehler</p>";

 if ($status == "Eintragen") {
  $query = "INSERT INTO user SET
    name ='".addslashes($name)."',
    kennwort ='".addslashes($kennwort)."',
    eMail ='".addslashes($email)."',
    ";
  $sql = mysql_query($query)
      or die(mysql_error());
  unset($name,$kennwort,$email,$status);
}
?>
</td>
</tr>
<tr>
<td>
<form method="post" action="anmeldung.php">
<input type="hidden" name="name" value="<?=$name?>">
<input type="hidden" name="kennwort" value="<?=$kennwort?>">

<table>
<tr>
  <td><small><b>Username</b></small></td>
  <td><input type="text" name="name" value="<?=htmlentities($name)?>" style="width: 380px"></td>
</tr>
<tr>
  <td><small><b>Passwort</b></small></td>
  <td><textarea name="kennwort" style="width: 380px;"><?=htmlentities($kennwort)?></textarea></td>
</tr>
<tr>
  <td><small><b>eMail</b></small></td>
  <td><input type="text" name="eMail" value="<?=htmlentities($email)?>" style="width: 380px"></td>
</tr>
<tr>
  <td></td>
  <td>
    <input type="submit" name="status" value="Eintragen">
  </td>
</tr>
</table>
</form>
</td>
</tr>
</table>



</body>
</html>


Das klappt soqweit gut, aber sobald ich auf "Eintragen" klicke bekomme ich diese Fehlermeldung, mit der ich nichts anfangen kann:
Zitat:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4


Die Struktur meiner MySQL-Datenbank "user" sieht so aus:
Zitat:
id smallint(5) Nein auto_increment Ändern Löschen Primärschlüssel Index Unique Volltext
name varchar(255) latin1_german1_ci Nein Ändern Löschen Primärschlüssel Index Unique Volltext
Kennwort varchar(50) latin1_german1_ci Nein Ändern Löschen Primärschlüssel Index Unique Volltext
eMail varchar(255) latin1_german1_ci Nein Ändern Löschen Primärschlüssel Index Unique Volltext



Vielleicht wisst ihr ja mehr.
MfG
Yannik
 

FWeinb

ehemals "ich"

BeitragSo, Aug 09, 2009 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach grobem Überfliegen ist hier ein Komma zu viel:
Code: [AUSKLAPPEN]

 if ($status == "Eintragen") {
  $query = "INSERT INTO user SET
    name ='".addslashes($name)."',
    kennwort ='".addslashes($kennwort)."',
    eMail ='".addslashes($email)."',
    ";
  $sql = mysql_query($query)
      or die(mysql_error());
  unset($name,$kennwort,$email,$status);
}


Nach addslashes($email)."',";
das , hat da nix zu suchen.

Ich würde die Zeile so schreiben:
Code: [AUSKLAPPEN]

$sql = mysql_query("INSERT INTO user SET name = '$name', kennwort='$kennwort', eMail = '$email'");


Hatte damit noch nie Probleme.

mfg

ich
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs
 

Garfield12

BeitragSo, Aug 09, 2009 12:08
Antworten mit Zitat
Benutzer-Profile anzeigen
@ich :
super danke es klaptt wunderbar, allerdings wird das Passwort jetzt immer als leer angemängelt.

~edit:~

Es geht wieder, ich habe ein K groß geschreiben welches klein geschrieben werden sollte.
 

#Reaper

Newsposter

BeitragSo, Aug 09, 2009 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutzte besser die Funktion mysql_real_escape_string() anstatt addslashes() bei den Queries.
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group