Registrierungsscript

Sleeper

Mitglied
Hallo,
ich verusche mich seit zwei Tagen an einem Script. Leider habe ich auch nicht die große Ahnung von PHP und MySQL.

Habe zum lernen erstmal ein Formular für Namen und Passort (2x) erstellt.
Das Paßwort soll kontrolliert werden ob es zweimal richtig geschrieben worden ist.
Wenn ich dann auf senden gehe, trägt er zwar den Namen richtig ein, aber bei dem Passwort trägt er immer 1 ein.

Vielleicht kann mir ja jemand helfen?
Habe hier das Listing:
PHP:
<?php
include ("config.php");
$h = $HTTP_POST_VARS; // die übergebenen variable einfach in $h speichern, weil es kürzer ist
$pwd = ($h["pwd1"]==$h["pwd2"]) && (strlen($h["pwd1"])>=6); // vor dem && werden die eingebenen passwörter auf gleichheit überprüft und danach darauf, dass sie mindestens 6 zeichen lang sind
if (pwd) // dann mache das, was du mit dem passwort machen willst;
if ($submit) {
$db = mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_name,$db);
$sql = "INSERT INTO $db_table (name,pwd) VALUES ('$name','$pwd')";
$result = mysql_query($sql,$db);
header("Location: $regok");
}
else {
 ?>
<form method="post" action="test.php">
<table border="0" align="center">
<tr>
<td>Name</td>
<td><input type="text" name="name" value="<? echo $name ?>" size="50"></td>
</tr>
<tr>
<td>Passwort</td>
<td><input type="password" maxlength="15" name="pwd1"  value="<? echo $pwd1 ?>"></td>
</tr>
<tr>
<td>Wiederholen</td>
<td><input type="password" maxlength="15" name="pwd2"  value="<? echo $pwd2 ?>"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>
<?
}
?>
</body>
</html>


Schonmal besten Dank im vorraus.
 
Habe mal schnell drüber gesehen, an der Stelle

PHP:
$pwd = ($h["pwd1"]==$h["pwd2"]) && (strlen($h["pwd1"])>=6);
würde ich es so versuchen:
PHP:
if (($h["pwd1"]==$h["pwd2"]) && (strlen($h["pwd1"])>=6))
{
$pwd = $h["pwd1"];
}

würde aber nicht unbedingt die Variablen in h speichern, sondern diese dirket verwenden da diese von dem Formular gesendet werden. Also so:
PHP:
if (($pwd1==$pwd2) && (strlen($pwd1)>=6))
{
$pwd = $pwd1;
}

Ich hoffe es funktioniert so
:)
 
Hallo und erstmal danke für deine Antwort,
das mit dem Passwort überprüfen hatte ich hier im Forum so gefunden.
Habe mal dein Vorschlag ausprobiert
und jetzt schreibt er in die Tabelle, vom passwort, gar nichts mehr herein. Nur für den Namen.

PHP:
<?php
include ("config.php");
if (($pwd1==$pwd2) && (strlen($pwd1)>=6))

{

$pwd = $pwd1;

}

if ($submit) {

$db = mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_name,$db);
$sql = "INSERT INTO $db_table (name,pwd) VALUES ('$name','$pwd')";
$result = mysql_query($sql,$db);
header("Location: $regok");
}

else {
 ?>
<form method="post" action="test.php">
<table border="0" align="center">
<tr>
<td>Name</td>
<td><input type="text" name="name" value="<? echo $name ?>" size="50"></td>
</tr>
<tr>
<td>Passwort</td>
<td><input type="password" maxlength="15" name="pwd1"  value="<? echo $pwd1 ?>"></td>
</tr>
<tr>
<td>Wiederholen</td>
<td><input type="password" maxlength="15" name="pwd2"  value="<? echo $pwd2 ?>"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>
<?
}
?>
</body>
</html>
 
Dann kann es nur daran leigen das die Variablen nicht übereinstimmen, bedeutet die Variable $pwd wurde nicht gesetzt, somit die if Anweisung nicht ausgeführt. Da faällt mir auch auf das mei deiner ersten Version, die Variable $pwd mit 1 richtig besetzt wurde, da du in der Variable das Ergebnis der Abfrage also 1 gespeichert hats.

Zum Test lass dir doch mal die Variablen ausgeben, ob diese überhaupt richtig ankommen.
Also so:
PHP:
<?php
include ("config.php");
echo $pwd1;
echo $pwd2;
if (($pwd1==$pwd2) && (strlen($pwd1)>=6))

{

$pwd = $pwd1;

}

if ($submit) {

$db = mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_name,$db);
$sql = "INSERT INTO $db_table (name,pwd) VALUES ('$name','$pwd')";
$result = mysql_query($sql,$db);
header("Location: $regok");
}

else {
 ?>
<form method="post" action="test.php">
<table border="0" align="center">
<tr>
<td>Name</td>
<td><input type="text" name="name" value="<? echo $name ?>" size="50"></td>
</tr>
<tr>
<td>Passwort</td>
<td><input type="password" maxlength="15" name="pwd1"  value="<? echo $pwd1 ?>"></td>
</tr>
<tr>
<td>Wiederholen</td>
<td><input type="password" maxlength="15" name="pwd2"  value="<? echo $pwd2 ?>"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>
<?
}
?>
</body>
</html>
 
Da fällt mir noch eine Möglichkeit ein versuche mal das um auf deine erste Version zurück zu kommen, diesmal mit einer richtigen Abfrage:
PHP:
<?php
include ("config.php");
$h = $HTTP_POST_VARS; // die übergebenen variable einfach in $h speichern, weil es kürzer ist
if(($h["pwd1"]==$h["pwd2"]) && (strlen($h["pwd1"])>=6)) 
{
$pwd = $h["pwd1"];
}
else
{
echo "Die beiden Passwörter sind nicht gleich, oder zu kurz.";
}
if (pwd) // dann mache das, was du mit dem passwort machen willst;
if ($submit) {
$db = mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_name,$db);
$sql = "INSERT INTO $db_table (name,pwd) VALUES ('$name','$pwd')";
$result = mysql_query($sql,$db);
header("Location: $regok");
}
else {
 ?>
<form method="post" action="test.php">
<table border="0" align="center">
<tr>
<td>Name</td>
<td><input type="text" name="name" value="<? echo $name ?>" size="50"></td>
</tr>
<tr>
<td>Passwort</td>
<td><input type="password" maxlength="15" name="pwd1"  value="<? echo $pwd1 ?>"></td>
</tr>
<tr>
<td>Wiederholen</td>
<td><input type="password" maxlength="15" name="pwd2"  value="<? echo $pwd2 ?>"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>
<?
}
?>
</body>
</html>
Ich hoffe diesmal funktioniert es.
 
Leider haben beide Vorschläge nicht geholfen.
Es Tritt bei beiden aber auch das gleiche auf.

Und zwar wenn ich die test.php aufrufe steht das schon am anfang

Die beiden Passwörter sind nicht gleich, oder zu kurz


und im Name (textfeld) steht schon bseidel


mhhh, da setzt es aus ;)
 
Ich nochmal.

Hatte vorhin einen Fehler mit PHP.
Habe deinen 2 Vorschlag nochmal ausprobiert.
Die Meldung steht da zwar immer noch, aber er trägt wenigstens die Daten ein.

Wenn ich bewußt einen Fehler mache,
ist das Formular weg die Meldung steht da und außerdem

Warning: Cannot add header information - headers already sent by (output started at /httphome/meinserver/Projekte/form/test.php:10) in /httphome/meinserver/Projekte/form/test.php on line 18

Der Name wird eingetragen (DB) und das Passwort bleibt leer.

Mit Line 18 versteh ich nicht.
Wenn die Daten richtig sind, wechselt er zu dieser Seite.
 
Wegen des Headers:
Kann es sein das du den Header zwei mal verwendest?

Zu dem anderen Problem, das Formular kann so auch noch nicht richtig funktonieren, er trägt bei dir ein, wenn submit gesetzt wurde, das ist auf jeden Fall gesetzt auch wenn die Daten nicht stimmen, hatte mich auch schon gewundet was das sollte, hier noch einmal eine andere Lösung.
PHP:
<?php
include ("config.php");
$h = $HTTP_POST_VARS; // die übergebenen variable einfach in $h speichern, weil es kürzer ist
if(($h["pwd1"]==$h["pwd2"]) && (strlen($h["pwd1"])>=6)) 
{
$pwd = $h["pwd1"];

$db = mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_name,$db);
$sql = "INSERT INTO $db_table (name,pwd) VALUES ('$name','$pwd')";
$result = mysql_query($sql,$db);
header("Location: $regok");
}
else 
{
 ?>
<form method="post" action="test.php">
<table border="0" align="center">
<tr>
<td>Name</td>
<td><input type="text" name="name" value="<? echo $name ?>" size="50"></td>
</tr>
<tr>
<td>Passwort</td>
<td><input type="password" maxlength="15" name="pwd1"  value="<? echo $pwd1 ?>"></td>
</tr>
<tr>
<td>Wiederholen</td>
<td><input type="password" maxlength="15" name="pwd2"  value="<? echo $pwd2 ?>"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>
<?
}
?>
</body>
</html>

So ich hoffe es funktioniert jetzt, so sollte das Formular kommen wenn die Bedingungen nicht stimmen, und die eingetragenen Daten sollten auch erscheinen.
 
Super,
jetzt funzt es :)
Nur halt ohne Fehlermeldung,
aber da wollte ich das sowieso etwas anders machen.
Und zwar für das ganze Regscript auf eine Seite umleiten.
Für alle Fehler die gleiche Seite. in einer config.php gebe ich verschiedene Meldungen ein.
Für jeden Fehler eine Meldung und das Script soll dann denn text(Meldung) für den jeweiligen Fehler selbst setzen.

Damit erspart man sich einige Dateien.

Hat da jemand vielleicht schon eine Idee für die Umsetzung parat?

Nochmal Besten Dank an SirNeo.
 
Zurück