PHP oder HTML Fehler?

Hallo Leute, ich habe hier ein kleines Problem, und hoffe das Ihr mir dabei helfen könnt.
Falls das Problem doch woanders liegt, habe ich mal den kompletten Quellcode gepostet, habe aber die meiner Meinung nach relevanten Teile farblich gekennzeichnet und genauer erklärt, damit Ihr nicht alles lesen müsst. Kenne ja das Übel große Codes durchwühlen zu müssen …
Ich bedanke mich schonmal in voraus für Eure Hilfe
Gruß Fly

Anmeldeformular #zentriert { position:absolute; top:50%; left:50%; width:45em; height:20em; margin-left:-15em; margin-top:-10em; padding:1em; }

Anmeldeformular

Dies ist ein Testformular zum Testen von php in Tabellen.

<?php if (isset($_POST['submit'])){ //Formular gesendet $username=trim($_POST['username']); if(empty($username)) {$use="Bitte Usernamen eingeben!
";}

$pwd=trim($_POST[‘pwd’]);
if(empty($pwd)) {$pass=“Bitte Passwort eingeben!
”;}

$name=trim($_POST[‘name’]);
if(empty($name)) {$na=“Bitte Namen eingeben!
”;}

$vname=trim($_POST[‘vname’]);
if(empty($vname)) {$vna=“Bitte Vornamen eingeben!
”;}

$str=trim($_POST[‘str’]);
if(empty($str)) {$st=“Bitte Straße und Hausnummer eingeben!
”;}

$plz=trim($_POST[‘plz’]);
if(empty($plz)) {$pl=“Bitte Postleitzahl eingeben!
”;}

$stadt=trim($_POST[‘stadt’]);
if(empty($stadt)) {$sta=“Bitte Ort eingeben!
”;}

$mail=trim($_POST[‘mail’]);
if(empty($mail)) {$mai=“Bitte E-Mail Adresse eingeben!
”;}
}
//Hier fängt der problematische Teil an!
Der erste Part
(in blau) [color=#FF0000]funzt wunderbar, der eingegebene Text im Formularfeld Username wird immer wieder neu eingetragen bis die Bedingung, alle Pflichtfelder ausgefüllt, erfüllt ist und löscht dann den Text nach submit aus dem Feld.
Nach diesem Erfolg wollte ich es auch auf die anderen Felder anwenden und kopierte den Code auf die anderen Formularfeld, was dann nicht mehr funzte :-/

Deshalb habe ich es mit einer Einfachen Testlösung[/color] (in Grün) im Formularfeld Name versucht, leiderschlägt auch dieser einfache PHP Code fehl :frowning:

[color=#BF0000]Ich habe die anderen Formularfelder mal unverändert drin gelassen, damit deutlich wird wie es gemeint war. Wichtig sind aber meines erachtens nur die beiden Farblichen Bereiche.

mein Hauptproblem ist eig. weshalb der Code auf das Feld ‘Username’ funzt und auf die anderen Felder nicht … an einer vergessenen Klammer kann es eig. nicht liegen, weil der Code,nachdem er reibungslos funzte, direkt kopiert und eingefügt wurde, könnte es evtl an der Tabelle liegen? Ich bin echt ratlos. [/color]
?>

[color=#0000FF] [/color] [color=#00FF00] [/color]
Username: ><?php echo $use; ?>
Passwort: <?php echo $pass; ?>
Name: ><?php echo $na; ?>
Vorname: > <?php echo $vna; ?>
Straße: > <?php echo $st; ?>
PLZ: > <?php echo $pl; ?>
Ort: > <?php echo $sta; ?>
E-Mail: > <?php echo $mai; ?>
Telefon: >

hi,

das problem hat ich auch schon schreib das zeug einfach in ne session

hab das mal im passwort feld für dich gemacht anschauen und bei den anderen Feldern genau so

//EDIT//
hab als action bp.php eingetragen muss bei dir halt wieder angepasst werden!

[code]

Anmeldeformular #zentriert { position:absolute; top:50%; left:50%; width:45em; height:20em; margin-left:-15em; margin-top:-10em; padding:1em; }

Anmeldeformular

Dies ist ein Testformular zum Testen von php in Tabellen.

<?php session_start(); if (isset($_POST['submit'])){ //Formular gesendet $username=trim($_POST['username']); if(empty($username)) {$use="Bitte Usernamen eingeben!
";}

$pwd=trim($_POST[‘pwd’]);
if(empty($pwd)) {$pass=“Bitte Passwort eingeben!
”;}

$name=trim($_POST[‘name’]);
if(empty($name)) {$na=“Bitte Namen eingeben!
”;}

$vname=trim($_POST[‘vname’]);
if(empty($vname)) {$vna=“Bitte Vornamen eingeben!
”;}

$str=trim($_POST[‘str’]);
if(empty($str)) {$st=“Bitte Straße und Hausnummer eingeben!
”;}

$plz=trim($_POST[‘plz’]);
if(empty($plz)) {$pl=“Bitte Postleitzahl eingeben!
”;}

$stadt=trim($_POST[‘stadt’]);
if(empty($stadt)) {$sta=“Bitte Ort eingeben!
”;}

$mail=trim($_POST[‘mail’]);
if(empty($mail)) {$mai=“Bitte E-Mail Adresse eingeben!
”;}
}
?>

<? $_SESSION['pwd'] = $_POST['pwd']; ?>
Username: > <?php echo $use; ?>
Passwort: <?php echo $pass; ?>
Name: > <?php echo $na; ?>
Vorname: > <?php echo $vna; ?>
Straße: > <?php echo $st; ?>
PLZ: > <?php echo $pl; ?>
Ort: > <?php echo $sta; ?>
E-Mail: > <?php echo $mai; ?>
Telefon: >
[/code]

Hi Maxo, schonmal danke für die schnelle Antwort.

Leider funzt das so nicht wirklich.
Habe auch noch nie mit Sessions gearbeitet, da ich mich erst seit einigen Wochen intensiv mit dem erlernen von PHP beschäftige.

Habe Deine Version mal ausprobiert und bekomme dabei folgende 2 Fehlermeldungen.

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /users/mcfly/www/crypt4.php:4) in /users/mcfly/www/crypt4.php on line 23

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /users/mcfly/www/crypt4.php:4) in /users/mcfly/www/crypt4.php on line 23

Denke zwar das ich cookies aktiviert habe, aber sicher bin ich mir mom nicht…
würde es daran liegen?
Falls ja denke ich das die Seite in diesem Fall dann ja bei vielen Leuten nicht funzen würde.
Da gab es soweit ich mich erinnern kann noch ne 2. Möglichkeit mit Sessions zu arbeiten.

Einmal Session Cookies und dann das Arbeiten mit arrays. Wie würde das dann aussehen, und würde das dann das Problem der Lauffähigkeit lösen?

//EDIT: Line 23 ist die Zeile in der Session start() steht.
Gruß Fly

mhm… probiers mal so müsste dann eigentlich funktionieren :wink:

[code]<?php
session_start();
?>

Anmeldeformular #zentriert { position:absolute; top:50%; left:50%; width:45em; height:20em; margin-left:-15em; margin-top:-10em; padding:1em; }

Anmeldeformular

Dies ist ein Testformular zum Testen von php in Tabellen.

<?php if (isset($_POST['submit'])){ //Formular gesendet $username=trim($_POST['username']); if(empty($username)) {$use="Bitte Usernamen eingeben!
";}

$pwd=trim($_POST[‘pwd’]);
if(empty($pwd)) {$pass=“Bitte Passwort eingeben!
”;}

$name=trim($_POST[‘name’]);
if(empty($name)) {$na=“Bitte Namen eingeben!
”;}

$vname=trim($_POST[‘vname’]);
if(empty($vname)) {$vna=“Bitte Vornamen eingeben!
”;}

$str=trim($_POST[‘str’]);
if(empty($str)) {$st=“Bitte Straße und Hausnummer eingeben!
”;}

$plz=trim($_POST[‘plz’]);
if(empty($plz)) {$pl=“Bitte Postleitzahl eingeben!
”;}

$stadt=trim($_POST[‘stadt’]);
if(empty($stadt)) {$sta=“Bitte Ort eingeben!
”;}

$mail=trim($_POST[‘mail’]);
if(empty($mail)) {$mai=“Bitte E-Mail Adresse eingeben!
”;}
}
?>

<? $_SESSION['pwd'] = $_POST['pwd']; ?>
Username: > <?php echo $use; ?>
Passwort: <?php echo $pass; ?>
Name: > <?php echo $na; ?>
Vorname: > <?php echo $vna; ?>
Straße: > <?php echo $st; ?>
PLZ: > <?php echo $pl; ?>
Ort: > <?php echo $sta; ?>
E-Mail: > <?php echo $mai; ?>
Telefon: >
[/code]

Jo das war es, schein in diesem Fall wichtig zu sein die Session ganz am Anfang zu öffnen.

Allerdings lässt sich das nicht auf mein Problem anwenden, da ich es so nichtin eine IF anweisung setzen kann.

Ich habe es folgender maßen ausprobiert, und hatte dann das alte Problem. der Name blieb nicht drin.

Scheint also doch irgendein Tipfehler drin zu sein, obwohl es an erster Stelle ja funktionierte. Sehr ominöse Geschichte …

<?php $_SESSION['username'] = $_POST['username']; [color=#00FF00]$_SESSION['pwd'] = $_POST['pwd'];[/color] $_SESSION['vname'] = $_POST['vname']; $_SESSION['str'] = $_POST['str']; $_SESSION['plz'] = $_POST['plz']; $_SESSION['stadt'] = $_POST['stadt']; $_SESSION['mail'] = $_POST['mail']; $_SESSION['tel'] = $_POST['tel']; ?>
[color=#00BF00][/color] [color=#ff8000] //Funzt in dieser Form[/color][color=#00bf00] [/color] [color=#BF0000][/color] [color=#FF8000]//Angewendet auf IF Anweisung, funzt nicht mehr.[/color][color=#BF0000] <?PHP $_SESSION['name'] = $_POST['name']; ?> [/color]
Username: > <?php echo $use; ?>
Passwort: <?php echo $pass; ?>
Name:> <?php echo $na; ?>

Gelöst: Man muss nur etwas Schielen … oh man

Wenn man im Imputfeld vergisst das Value="" wegzunehmen, dann kann das angehängte php nicht funzen. Ist doppelt gemoppelt.

Name: //Angewendet auf IF Anweisung, funzt nicht mehr. <?PHP $_SESSION['name'] = $_POST['name']; ?> > <?php echo $na; ?>

auch ne möglichkeit

jetzt hab ich deinen code trotzdem mal gemacht mit sessions sollte so nun einwandfrei laufen…:

Ach ist es Absicht das das Telefon Feld nicht überprüft wird?

[code]<?
session_start();
$_SESSION[‘username’] = $_POST[‘username’];
$_SESSION[‘pwd’] = $_POST[‘pwd’];
$_SESSION[‘name’] = $_POST[‘name’];
$_SESSION[‘vname’] = $_POST[‘vname’];
$_SESSION[‘str’] = $_POST[‘str’];
$_SESSION[‘plz’] = $_POST[‘plz’];
$_SESSION[‘stadt’] = $_POST[‘stadt’];
$_SESSION[‘mail’] = $_POST[‘mail’];
$_SESSION[‘tel’] = $_POST[‘tel’];
?>

Anmeldeformular #zentriert { position:absolute; top:50%; left:50%; width:45em; height:20em; margin-left:-15em; margin-top:-10em; padding:1em; }

Anmeldeformular

Dies ist ein Testformular zum Testen von php in Tabellen.

<?php if (isset($_POST['submit'])){ //Formular gesendet $username=trim($_POST['username']); if(empty($username)) {$use="Bitte Usernamen eingeben!
";}

$pwd=trim($_POST[‘pwd’]);
if(empty($pwd)) {$pass=“Bitte Passwort eingeben!
”;}

$name=trim($_POST[‘name’]);
if(empty($name)) {$na=“Bitte Namen eingeben!
”;}

$vname=trim($_POST[‘vname’]);
if(empty($vname)) {$vna=“Bitte Vornamen eingeben!
”;}

$str=trim($_POST[‘str’]);
if(empty($str)) {$st=“Bitte Straße und Hausnummer eingeben!
”;}

$plz=trim($_POST[‘plz’]);
if(empty($plz)) {$pl=“Bitte Postleitzahl eingeben!
”;}

$stadt=trim($_POST[‘stadt’]);
if(empty($stadt)) {$sta=“Bitte Ort eingeben!
”;}

$mail=trim($_POST[‘mail’]);
if(empty($mail)) {$mai=“Bitte E-Mail Adresse eingeben!
”;}
}
?>

Username: > <?php echo $use; ?>
Passwort: <?php echo $pass; ?>
Name: > <?php echo $na; ?>
Vorname: > <?php echo $vna; ?>
Straße: > <?php echo $st; ?>
PLZ: > <?php echo $pl; ?>
Ort: > <?php echo $sta; ?>
E-Mail: > <?php echo $mai; ?>
Telefon: >
[/code]

Außerdem was soll bitte <h0…> sein? Nicht valides HTML, denn Überschriften gibt es nur von h1 bis h7.

Danke Maxo, aber da hast Du etwas überlesen, so würde es dann nicht mehr richtig funktionieren.
Schau mal hier im Ausschnitt:

Username: >

Deine Variante funktioniert soweit das der Username über sie Session ausgegeben wird und die Session anschließend wieder gelöscht wird. Dann werden die Felder aber nicht mehr gelöscht wenn die Felder Username bis Email ausgefüllt sind.

Deshalb habe ich es mit der IF Anweisung gelöst, so wird gewährleistet das der Username ausgegeben wird solange nicht alle Felder ausgefüllt wurden.

So ist es zwar nicht über eine Session realisiert funktioniert aber.
Um es in einer Session umzusetzen, müsste ich, wenn ich es richtig verstanden habe, alle POST-Variablen in Session-Variablen umschreiben, oder?

Session close() gibt man dann erst aus wenn irgendwann ein logout button oder der ausgewählte Bereich der Seite verlassen werden soll richtig?

Und ja das Telefonfeld soll nur ein optionales Feld sein und braucht deshalb nicht überprüft werden.

Ich wollte die echo Ausgabe in Rot haben, und habe es nicht ohne h0 oder h1 hinbekommen.

Wenn ich < ho > schreibe habe ich die normale Schriftgröße.

Mal zur Erklährung, so ging es
$username=trim($_POST[‘username’]);
if(empty($username)) {$use=“Bitte Usernamen eingeben!
”;}

Und so wie ich es wollte nicht…
$username=trim($_POST[‘username’]);
if(empty($username)) {$use=“Bitte Usernamen eingeben!
”;}

//Edit: Ich werde es nochmal mit einfachem CSS probieren, dann geht es vll ohne dieses ominöse .

Verbesserungsvorschlag?

[color=#40FF00]//Edit: Ich habe es jetzt mit

geregelt.

$username=trim($_POST[‘username’]);
if(empty($username)) {$use=“

Bitte Usernamen eingeben!
”;}

So sollte es jetzt denke ich auch HTML valid sein.[/color]
Gruß Fly

@mcfly weiß nicht ganz was du meinst bei mir hat es wunderbar funktioniert… aber wenn du selbst einen Weg gefunden hast mit dem es auch geht umso besser… :ps:

Ich versuche es mal bildlich:

Die Felder:
Username
Passwort
Name
Vorname
Straße
PLZ
Ort
und Email

Sollen nur solange nach drücken des Submit-Buttons beschrieben bleiben bis wie oben im Bild angegeben alle Felder beschrieben sind.
Ist das der Fall sollen alle Felder, nach drücken des Buttons, geleert werden.

Und diese Sache geht bei Deiner Variante nicht. Aber da Du das missverstanden hattest ist das nicht weiter verwunderlich.

Es funzt jetzt zumindest so wie ich es wollte, auch wenn es leider nicht in einer Session realisiert ist wie Du es vorgeschlagen hast.
Denn das Arbeiten mit Sessions birgt viele Vorteile, unter anderem lassen sich so Sicherheitslücken im loginbereich schließen. (Vergleich der Sessen-ID).
Aber damit übernehme ich mich wahrscheinlich auch ein wenig ^^.

Gruß Fly

so wolltest du das hab ich wohl nicht richtig gelesen !haue!
Jetzt hast aber auch gleich eine kleine einführung in sessions bekommen…

Das ganze würde mit sessions meines wissen auch gehen nur dann müsste das ganze etwas anderst aufgebaut werden aber jetzt gehts ja… :smiley: