Hilfe bei POST Check und Session
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
anfang
benutzername
code
email
fehler
formular
funktion
header
index
inhalt
login
part
post
session
speichern
stimmen
string
url
zicken
-
Hallo liebes Forum!
Ich bin am verzweifeln ...
... wo liegt hier der Fehler?
Das Formular auf den Registrirungs-'index.php' hat genau die selben POSt "names" im Formular ...
$login = clean($_POST['username']); $fname = clean($_POST['fname']); $lname = clean($_POST['lname']); $mail = clean($_POST('email')); $mailw = clean($_POST('emailw')); $password = clean($_POST['password']); $cpassword = clean($_POST['cpassword']); if($login == '') { $errmsg_user[] = 'Benutzername wird benötigt!'; $errflag = TRUE; } if($fname == '') { $errmsg_fname[] = 'Vorname wird benötigt!'; $errflag = TRUE; } if($lname == '') { $errmsg_lname[] = 'Nachname wird benötigt!'; $errflag = TRUE; } if($mail == '') { $errmsg_mail[] = 'E-Mail Adresse wird benötigt'; $errflag = TRUE; } if($mailw == '') { $errmsg_mailw[] = 'E-Mail Wiederholen wird benötigt'; $errflag = TRUE; } if( strcmp($mail, $mailw) != 0 ) { $errmsg_mailww[] = 'E-Mails stimmen nicht überein!'; $errflag = TRUE; } if($password == '') { $errmsg_pass[] = 'Passwort wird benötigt!'; $errflag = TRUE; } if($cpassword == '') { $errmsg_passw[] = 'Passwordwiederholung wird benötigt!'; $errflag = TRUE; } if( strcmp($password, $cpassword) != 0 ) { $errmsg_passww[] = 'Passwörter stimmen nicht überein!'; $errflag = TRUE; } if($errflag) { $_SESSION['ERRMSG_user'] = $errmsg_user; $_SESSION['ERRMSG_userw'] = $errmsg_userw; $_SESSION['ERRMSG_fname'] = $errmsg_fname; $_SESSION['ERRMSG_lname'] = $errmsg_lname; $_SESSION['ERRMSG_mail'] = $errmsg_mail; $_SESSION['ERRMSG_mailw'] = $errmsg_mailw; $_SESSION['ERRMSG_mailww'] = $errmsg_mailww; $_SESSION['ERRMSG_pass'] = $errmsg_pass; $_SESSION['ERRMSG_passw'] = $errmsg_passw; $_SESSION['ERRMSG_passww'] = $errmsg_passww; session_write_close(); header("location: index.php"); }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
1. verwende zum debuggen:
ini_set('display_errors', 1); error_reporting(E_ALL);
2. lasse dir den Inhalt des Superglobals $_POST() anzeigen:
var_dump($_POST);
3. lasse dir den Inhalt des Superglobals $_SESSION() anzeigen, bevor die Session geschlossen wird:
var_dump($_SESSION);
Die funktion clean() könnte auch fehlerbehaftet sein.
Mal als Grundlage für den Anfang.
-
Ein session_start() am Anfang vom Script wäre sicherlich auch nicht verkehrt.
Lg cookies -
glowsoft schrieb:
Was bezweckst du mit diesem Stück von Code? Wie sieht der Rest aus?
Was funktioniert denn nicht so, wie du es bezweckst?
Was macht deine clean()-Funktion und meinst du ein session_close_write ist tatsächlich erforderlich?
Viel dank für die schnellen antworten :-)
Folgender ablauf:
Ich möchte mich auf meiner Seite neu registrieren, Das Formular schickt mich auf die init.php und überprüft dort oben etwas eigegeben wurde. Falls nichts eingetippt worden ist soll es mich auf die Registr php Seite zurück verweisen und über SESSION ausgeben was fehlt.
session_start(); ist bereits in meiner Seite ganz oben vorhanden
Beitrag zuletzt geändert: 23.3.2013 17:52:57 von bastitrial -
wichtiger zu wissen wäre:
1. Fehlermeldungen.
2. Inhalte von $_POST() und $_SESSION()
Ein Mindestmaß an Infos braucht es schon.
Der Hinweis, dass dein Script nicht funktioniert reicht alleine nicht aus, wenn dir geholfen werden soll. -
timebandit schrieb:
wichtiger zu wissen wäre:
1. Fehlermeldungen.
2. Inhalte von $_POST() und $_SESSION()
Ein Mindestmaß an Infos braucht es schon.
Der Hinweis, dass dein Script nicht funktioniert reicht alleine nicht aus, wenn dir geholfen werden soll.
Die Inhalte von Post sind oben korrekt geführt :-/
Der Inhalt des obrigen Scriptes sind inhalte meine Mysql connect php seite. Ich möchte mit diesem Skcript Inhalte in meine Mysql Tabelle speichern. Der Mysql Part funktionierte mit einer stark vereinfachten Version meines zuerst geopsteten Scriptes. Da sollten also keine Fehler vorliegen :-/
Das Ziel des Script stückes ist die eine jeweilige Fehlermeldung in SESSION zu speichern um die dann auf der Regstr Seite auszuspucken um genau sicher zu stellen was der Benutzer falsch gemacht hat ...
-
Die Inhalte von Post sind oben korrekt geführt :-/
Der Inhalt des obrigen Scriptes sind inhalte meine Mysql connect php seite. Ich möchte mit diesem Skcript Inhalte in meine Mysql Tabelle speichern. Der Mysql Part funktionierte mit einer stark vereinfachten Version meines zuerst geopsteten Scriptes. Da sollten also keine Fehler vorliegen :-/
if($login == '') { $errmsg_user[] = 'Benutzername wird benötigt!'; $errflag = TRUE; } if($fname == '') { $errmsg_fname[] = 'Vorname wird benötigt!'; $errflag = TRUE; } if($lname == '') { $errmsg_lname[] = 'Nachname wird benötigt!'; $errflag = TRUE; } if($mail == '') { $errmsg_mail[] = 'E-Mail Adresse wird benötigt'; $errflag = TRUE; } if($mailw == '') { $errmsg_mailw[] = 'E-Mail Wiederholen wird benötigt'; $errflag = TRUE; } if( strcmp($mail, $mailw) != 0 ) { $errmsg_mailww[] = 'E-Mails stimmen nicht überein!'; $errflag = TRUE; } if($password == '') { $errmsg_pass[] = 'Passwort wird benötigt!'; $errflag = TRUE; } if($cpassword == '') { $errmsg_passw[] = 'Passwordwiederholung wird benötigt!'; $errflag = TRUE; } if( strcmp($password, $cpassword) != 0 ) { $errmsg_passww[] = 'Passwörter stimmen nicht überein!'; $errflag = TRUE; } if($errflag) { $_SESSION['ERRMSG_user'] = $errmsg_user; $_SESSION['ERRMSG_userw'] = $errmsg_userw; $_SESSION['ERRMSG_fname'] = $errmsg_fname; $_SESSION['ERRMSG_lname'] = $errmsg_lname; $_SESSION['ERRMSG_mail'] = $errmsg_mail; $_SESSION['ERRMSG_mailw'] = $errmsg_mailw; $_SESSION['ERRMSG_mailww'] = $errmsg_mailww; $_SESSION['ERRMSG_pass'] = $errmsg_pass; $_SESSION['ERRMSG_passw'] = $errmsg_passw; $_SESSION['ERRMSG_passww'] = $errmsg_passww; session_write_close(); header("location: index.php");
Dann bleiben nur die Sessionvariablen, die zicken.
Welche Inhalte hat $_SESSION() ?
-
timebandit schrieb:
Dann bleiben nur die Sessionvariablen, die zicken.
Welche Inhalte hat $_SESSION() ?
verwendest Du auch
sowohl beim in Session-Variable schreibensession_start();
... sowie auch beim Auslesen ?
hier mal ein einfaches Beispiel:
... die Funktion clean() ist hier auch nur grobes Beispiel
besser wäre für eMail-Adressen eine Syntax Prüfung (und ggf. auch ob Email-Server erreichbar ist)
für Links dann eben eine URL-Syntax Prüfung (und ggf. auch ob Ziel-Adresse erreichbar ist)
für Username nur erlaubte Zeichen, usw. etc ... je nach Eingabe die "passende" Prüfung / Filter
<?php // ------------------------------------------------ session_start(); function clean($string) { $string = trim($string); $string = stripslashes($string); $string = htmlentities($string); return $string; } if (!empty($_POST['email'])) { $_SESSION['user_email'] = clean($_POST['email']); } // ------------------------------------------------ print "<h2>Anmeldung</h2>\n"; print "<br />\n"; // ------------------------------------------------ if (isset($_SESSION['user_email']) { print "<br /> OK .... User Email ist: ".$_SESSION['user_email']." \n"; // ---- hier Code zum Lesen / Speichern in MySQL ---- } else { // ------------------------------------------------ print "<br />Es wurde (noch) keine User Email eingetragen \n"; print "<br />\n"; print ' <form name="form1" method="post" action=""> Email-Adresse: <input type="text" name="email" size="30" maxlength="120" /> OK: <input type="submit" name="senden" value="Absenden" /> </form> '; } print "<br />\n"; print "<br />\n"; // ------------------------------------------------ ?>
Wichtig ist
damit Du in $_SESSION schreiben kannstsession_start();
... und auch damit Du die $_SESSION auslesen kannst
-
Ich weiss jetzt wo mein Problem liegt :-)
Alle Sessions werden angezeig - also genau so wie ich das gerne hätte :)
Jedoch soll mich die init.php nach dem setzen von SESSION automatisch auf registr-index.php zurückleiten und dort die Fehler listen.
Es klappt alles super bis zur header funktion ...
session_write_close();
header("location: ../index.php");
exit();
Das habe ich jetzt direkt unter dem ganzen SESSION Part kopiert...
... Wo ist der Fehler oder gibt es noch andere möglichkeiten ...?
Beitrag zuletzt geändert: 24.3.2013 14:51:26 von bastitrial -
Am Anfang der index.php session_start() setzen.
Für das Debugging: var_dump($_SESSION);
Falls dein Editor in "UTF-8" kodiert, dann ändere die Kodierung in "UTF-8 ohne BOM".
-
Okay!
Vielen Danke - hat sich gelöst =) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage