PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formular mit $PHP_SELF: Anfangswert soll nur einmal eingetragen werden


NoFugo
13.02.2007, 11:21:43
Hallo,
ich habe ein Formular mit $PHP_SELF, in das der User seine Rufnummer sowie sein Passwort + Passwortbestätigung eintragen soll.
<input name="rufnummer" type="text" value="+49<?php echo $_POST[rufnummer]; ?>" size="10" maxlength="25">

Das Problem ist, sobald der User sein Passwort falsch eingibt, bzw. keine Rufnummer angibt, wird der Anfangswert "+49" jedes mal neu eingetragen (z.B. +49+49...) - ist ja auch logisch.

Jetzt die Frage: Wie kann ich das verhindern ohne mit Javascript zu arbeiten? Ich habe es auch schon mit einem eigenen Feld für die Vorwahl probiert, allerdings reicht dann der Platz nicht mehr aus (die Seite ist für Handys ausgelegt).

BenniG.
13.02.2007, 11:23:26
Ich würde einfach bei der Verarbeitung checken, ob die Werte plausibel sind.. Machst du da schon irgendwas?

NoFugo
13.02.2007, 11:29:44
Bislang habe ich nurfolgende Abfrage für die Eingabe:


if(isset($send)) {
if ($rufnummer == "+49") {
$error_ruf = "<b>Bitte geben Sie ihre Rufnummer ein.</b><br>";}
elseif ($passwort == "") {
$error_pass_no = "<b>Bitte geben Sie ein Kennwort ein.</b><br>";}
elseif ($passwort != $passwort2) {
$error_pass_ungl = "<b>Ihre beiden Kennworteingaben waren nicht identisch!</b><br>";}
else {
$formcheck = "ok";
}

BenniG.
13.02.2007, 11:31:42
Dann setz doch bei Eintreten eines Fehlers ein Flag ( $fehler=true; ) und prüf das vor dem Eintragen des Datensatz

NoFugo
13.02.2007, 11:46:25
Aber wie? Zur Erläuterung: Es geht primär darum, dass bei falscher Eingabe des Passwortes, die Rufnummereingabe um ein weiteres "+49" ergänzt wird. Im Inputfeld steht dann z.B. statt +4912345 ein +49+4912345. Ich will dem User jetzt natürlich ersparen, wieder zurück in das Rufnummernfeld zu gehen und das überflüssige +49(mitunter auch mehrere davon) zu löschen.
Wie soll ich das prüfen, wenn als Anfangswert bereits ein +49 im Feld steht?

BenniG.
13.02.2007, 11:51:18
wie schreibst du den wert denn in das Textfeld rein?
Poste doch mal mehr Code..

NoFugo
13.02.2007, 12:03:01
Hier der relevante Code:


<?php
if(isset($send)) {
if ($rufnummer == "+49") {
$error_ruf = "<b>Bitte geben Sie ihre Rufnummer ein.</b><br>";}
elseif ($passwort == "") {
$error_pass_no = "<b>Bitte geben Sie ein Kennwort ein.</b><br>";}
elseif ($passwort != $passwort2) {
$error_pass_ungl = "<b>Ihre beiden Kennworteingaben waren nicht identisch!</b><br>";}
else {
$formcheck = "ok";
echo "<!--";}
}
?>
<form action="<?php echo $PHP_SELF; ?>" method="post"><?php echo $error_ruf; ?>
Zur Anmeldung ben&ouml;tigen wir Ihre Mobilfunknummer:<br>
<input name="rufnummer" type="text" value="+49<?php echo $_POST[rufnummer]; ?>" size="10" maxlength="25">
<br>
<?php echo $error_pass_no; ?>
Legen Sie ihr Kennwort fest:<br>
<input name="passwort" type="password" size="5" value="<?php echo $_POST[passwort]; ?>" maxlength="10">
<br>
<?php echo $error_pass_ungl; ?>
Kennwort best&auml;tigen:<br>
<input name="passwort2" type="password" size="5" value="<?php echo $_POST[passwort2]; ?>" maxlength="10">
<br>
<input type="submit" value="Daten senden" name="send">
</form>

Andes
13.02.2007, 12:41:33
Ich würde ja erst mal prüfen ob $_POST['xxx'] überhaupt vorhanden ist, bevor du diese ausgeben möchtest. So wie du es definierst, spuckt PHP eine Warnung aus. Zumindest, wenn man error_reporting richtig eingestellt hat.
So kannst du dann auch gleich dein Voreintrag mit kombinieren.

<input name="rufnummer" type="text" value="<?php echo (!empty($_POST['rufnummer'])) ? $_POST['rufnummer'] : '+49'; ?>" size="10" maxlength="25">

NoFugo
13.02.2007, 13:00:38
Perfekt - besten Dank!