php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.02.2011, 12:14  
Neuer Benutzer
 
Registriert seit: 23.12.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
bsg4ever befindet sich auf einem aufstrebenden Ast
Standard Bei Formular-Aktion passiert nichts

Das folgende Script ist noch nicht komplett, es fehlen noch bestimmte Bereiche, allerdings müsste es schon einen User in eine Datenbank eintragen können. Der Code wurde aus dem LoginScript-Tut von Quakenet zusammengebastelt. Bloß wenn ich alle Daten in das Formular eingebe, passiert gar nichts. Die Daten tauchen auch nicht in der DB auf. Wahrscheinlich ein Problem beim schicken der Daten? Ist wahrscheinlich wieder ein ganz simpler kleiner Fehler, und ich bin wieder zu blöd

PHP-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

<head>
    <title>Regestrieren</title>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    <meta name="description" content="" />
    <meta name="author" content="" />
    <meta name="keywords" content="" />

</head>

<body>
<form action="register.php" method="post">
    <fieldset>
        <legend>Registieren</legend>
        <label>Username: <input type="text" name="username" /></label>
        <label>Password: <input type="password" name="password[]" /></label>
        <label>Bestätigung: <input type="password" name="password[]" /></label>
        <label>Email: <input type="text" name="email" /></label>
        <label>Bitte geben sie denn Regestrierungscode ein: <input type="text" name="code" /></label>
        <input type="submit" name="formaction" value="Registieren" />
    </fieldset>
</form>



</body>
</html>
<?php
error_reporting
(E_ALL);
ini_set('display_errors'1);

include 
"constants.php";

$ret = array();
$ret['filename'] = 'register.tpl';
$ret['data'] = array();
if (
'POST' == $_SERVER['REQUEST_METHOD'] ) {     
    if(!isset(
$_POST['username'), $_POST['password'], $_POST['email'], $_POST['code'], $_POST['formaction']);){
        return 
INVALID_FORM;
    }
    if (
count ($_POST['password']) != 2) {
        return 
INVALID_FORM;
    }
    if (
$_POST['password'][0] != $_POST['password'][1]) {
        return 
'<p class="error">Bitte geben sie das richtige Password ein.</p>';
    }
    if ((
$username trim($_POST['username'])) == '' OR
            (
$password trim($_POST['password'][0])) == '' OR
            (
$email trim($_POST['email'])) == '' OR
            (
$code trim($_POST['code'])) == '') {
        return 
EMPTY_FORM;
    }
    if (
'FS11KOBO' != $code) {
        return 
'<p class="error">Bitte geben sie den richtigen Code ein.</p>';
    }
    if (!
preg_match('~\A\S{3,30}\z~'$Username)) {
    return 
'Der Benutzername darf nur aus 3 bis 30 Zeichen bestehen und keine Leerzeichen enthalten.';
    }
    
$db = @new MySQLi("localhost","adminuser""adminuser""famsys");
    
$ret 1;
    if (
mysqli_connect_errno()) {
    
$ret '<p class="error">Fehler beim Aufbau der Datenbankverbindung: '.mysqli_connect_error().'('.mysqli_connect_errno().')</p>';
    } else {
    
$sql 'SELECT
                ID
            FROM
                user
            WHERE
                username = ?
            LIMIT
                1'
;
    
$stmt $db->prepare($sql);
    if (!
$stmt) {
        return 
$db->error;
    }
    
$stmt->bind_param('s'$username);
    
$stmt->execute();
    
$stmt->store_result();
    if(
$stmt->num_rows) {
        return 
'<p class="error">Der Username wird bereits verwendet.</p>';
    }
    
$stmt->close();
    }
    
$sql =' INSERT INTO
                user (username, email)
            VALUES
                (?, ?)'
;
    
$stmt $db->prepare($sql);
    if (!
$stmt) {
        return 
$db->error;
    }
    
$stmt->bind_param('ss'$username$email);
    if (!
$stmt->execute()) {
        return 
$stmt->error;
    }
    
$userID $stmt->insert_id;
    
$sql 'UPDATE
                user
            SET
                password = ?
            WHERE
                ID = ?'
;
    
$stmt $db->prepare($sql);
    if (!
$stmt) {
        return 
$db->error;
    }
    
$Hash md5(md5($userID).$password);
    
$stmt->bind_param('si'$Hash$UserID);
    if (!
$stmt->execute()) {
        return 
$stmt->error;
    }
    echo 
'<p class="info">Der Benutzer wurde hinzugef&uuml;gt. Sie k&ouml;nnen sich jetzt anmelden</p>';
}
return 
$ret;
?>
bsg4ever ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.02.2011, 12:16  
Erfahrener Benutzer
 
Registriert seit: 23.11.2010
Beiträge: 395
PHP-Kenntnisse:
Anfänger
phptt befindet sich auf einem aufstrebenden Ast
Standard

Was sollen die ganzen return's?? Bau an allen relevanten Stellen ein echo ein und lass dir die Variablen ausgeben.
__________________
Ich bin eine nervige Signatur!!!
phptt ist offline   Mit Zitat antworten
Alt 25.02.2011, 12:19  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

PHP-Code:
 if(!isset($_POST['username'), $_POST['password'], $_POST['email'], $_POST['code'], $_POST['formaction']);){ 
lies diese Zeile bitte langsam ... was sucht das Semikolon dort ?
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 25.02.2011, 12:51  
Neuer Benutzer
 
Registriert seit: 23.12.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
bsg4ever befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von eagle275 Beitrag anzeigen
lies diese Zeile bitte langsam ... was sucht das Semikolon dort ?
das semikolon ist beim kopieren reingerutscht. in der orignal-datei ist es nicht.

ich hab jetzt alle returns durch echos ersetzt, war ein blöder fehler. jetzt kommt jedoch so eine meldung (egal was ich eingebe)


"Bitte geben sie den richtigen Code ein.


Notice: Undefined variable: Username in C:\xampp\htdocs\FamSys\register.php on line 59
Der Benutzername darf nur aus 3 bis 30 Zeichen bestehen und keine Leerzeichen enthalten.
Der Benutzer wurde hinzugefügt. Sie können sich jetzt anmelden

1"

Der Datensatz wurde jedoch ohne Passwort trotzdem erstellt...
bsg4ever ist offline   Mit Zitat antworten
Alt 25.02.2011, 13:20  
Erfahrener Benutzer
 
Registriert seit: 23.11.2010
Beiträge: 395
PHP-Kenntnisse:
Anfänger
phptt befindet sich auf einem aufstrebenden Ast
Standard

$username != $Username
__________________
Ich bin eine nervige Signatur!!!
phptt ist offline   Mit Zitat antworten
Alt 25.02.2011, 13:30  
Neuer Benutzer
 
Registriert seit: 23.12.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
bsg4ever befindet sich auf einem aufstrebenden Ast
Standard

ja, (noch ein) dummer fehler meinerseits, funktioniert trotzdem nicht. selbe fehlermeldung. :/
bsg4ever ist offline   Mit Zitat antworten
Alt 25.02.2011, 13:31  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Dann guck halt in Zeile 59 Herrgott!
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 25.02.2011, 13:39  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Zeile 59 =>
PHP-Code:
if (!preg_match('~\A\S{3,30}\z~'$Username)) { 
Siehe auch #5

-------------------------------------------------------------------------

Um zu prüfen, ob das Formular geschickt wurde verwendest du
PHP-Code:
if ('POST' == $_SERVER['REQUEST_METHOD'] ) { 
Das ist zwar durchaus korrekt, eignet sich aber nur für solche Formulare, bei denen action="post" eingetragen ist. Formulare, die mit method="get" abgeschickt werden kann man so nicht prüfen, weil
PHP-Code:
if ('GET' == $_SERVER['REQUEST_METHOD'] ) { 
schon bei normalem Ansehen einer Seite erfüllt ist.
Es empfiehlt sich daher, prinzipiell ein Feld innerhalb des Formulars auf Existenz zu prüfen. Das kann ein normales existierendes Text-Feld sein, oder auch ein speziell für solche Prüfungen erzeugtes hidden-Field sein:
HTML-Code:
<input type="hidden" name="formular" value="formular1"> 
PHP-Code:
if ( isset($_POST['formular']) and $_POST['formular'] == 'formular1' ) { 
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 25.02.2011, 13:55  
Neuer Benutzer
 
Registriert seit: 23.12.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
bsg4ever befindet sich auf einem aufstrebenden Ast
Standard

EDIT:

Erstmal danke für die Hilfe.
Es gibt jetzt eigentlich nur noch 2 Probleme:
1. Das Passwort fehlt in der Datenbank
2. Obwohl diese

Zitat:
Bitte geben sie den richtigen Code ein.
Fehlermeldung kommt, wir der User trotzdem in die Datenbank eingetragen...
(Code ist richtig, habe ich bereits überprüft...)

Geändert von bsg4ever (25.02.2011 um 14:06 Uhr).
bsg4ever ist offline   Mit Zitat antworten
Alt 25.02.2011, 13:57  
Benutzer
 
Registriert seit: 23.04.2009
Beiträge: 36
phpde befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

<head>
    <title>Regestrieren</title>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    <meta name="description" content="" />
    <meta name="author" content="" />
    <meta name="keywords" content="" />

</head>

<body>
<form action="register.php" method="post">
    <fieldset>
        <legend>Registieren</legend>
        <label>Username: <input type="text" name="username" /></label>
        <label>Password: <input type="password" name="password[]" /></label>
        <label>Bestätigung: <input type="password" name="password[]" /></label>
        <label>Email: <input type="text" name="email" /></label>
        <label>Bitte geben sie denn Regestrierungscode ein: <input type="text" name="code" /></label>
        <input type="submit" name="formaction" value="Registieren" />
    </fieldset>
</form>



</body>
</html>
<?php
error_reporting
(E_ALL);
ini_set('display_errors'1);

include 
"constants.php";

$ret = array();
$ret['filename'] = 'register.tpl';
$ret['data'] = array();
if (
'POST' == $_SERVER['REQUEST_METHOD'])
     {     
    if(!isset(
$_POST['username'], $_POST['password'], $_POST['email'], $_POST['code'], $_POST['formaction']))
    {
        return 
INVALID_FORM;
    }
    if (
count ($_POST['password']) != 2) {
        return 
INVALID_FORM;
    }
    if (
$_POST['password'][0] != $_POST['password'][1]) {
        return 
'<p class="error">Bitte geben sie das richtige Password ein.</p>';
    }
    if ((
$username trim($_POST['username'])) == '' OR
            (
$password trim($_POST['password'][0])) == '' OR
            (
$email trim($_POST['email'])) == '' OR
            (
$code trim($_POST['code'])) == '') {
        return 
EMPTY_FORM;
    }
    if (
'FS11KOBO' != $code) {
        return 
'<p class="error">Bitte geben sie den richtigen Code ein.</p>';
    }
    if (!
preg_match('~\A\S{3,30}\z~'$Username)) {
    return 
'Der Benutzername darf nur aus 3 bis 30 Zeichen bestehen und keine Leerzeichen enthalten.';
    }
    
$db = @new MySQLi("localhost","adminuser""adminuser""famsys");
    
$ret 1;
    if (
mysqli_connect_errno()) {
    
$ret '<p class="error">Fehler beim Aufbau der Datenbankverbindung: '.mysqli_connect_error().'('.mysqli_connect_errno().')</p>';
    } else {
    
$sql 'SELECT
                ID
            FROM
                user
            WHERE
                username = ?
            LIMIT
                1'
;
    
$stmt $db->prepare($sql);
    if (!
$stmt) {
        return 
$db->error;
    }
    
$stmt->bind_param('s'$username);
    
$stmt->execute();
    
$stmt->store_result();
    if(
$stmt->num_rows) {
        return 
'<p class="error">Der Username wird bereits verwendet.</p>';
    }
    
$stmt->close();
    }
    
$sql =' INSERT INTO
                user (username, email)
            VALUES
                (?, ?)'
;
    
$stmt $db->prepare($sql);
    if (!
$stmt) {
        return 
$db->error;
    }
    
$stmt->bind_param('ss'$username$email);
    if (!
$stmt->execute()) {
        return 
$stmt->error;
    }
    
$userID $stmt->insert_id;
    
$sql 'UPDATE
                user
            SET
                password = ?
            WHERE
                ID = ?'
;
    
$stmt $db->prepare($sql);
    if (!
$stmt) {
        return 
$db->error;
    }
    
$Hash md5(md5($userID).$password);
    
$stmt->bind_param('si'$Hash$UserID);
    if (!
$stmt->execute()) {
        return 
$stmt->error;
    }
    echo 
'<p class="info">Der Benutzer wurde hinzugef&uuml;gt. Sie k&ouml;nnen sich jetzt anmelden</p>';
}
return 
$ret;
?>
phpde ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] &quot;Form action&quot; soll zweites Formular abschicken Farlif PHP Tipps 2010 7 19.08.2010 11:27
Ergebnis von Formular in iFrame zeigen PsychoEagle HTML, Usability und Barrierefreiheit 2 22.07.2009 21:07
Wert aus Textfeld in neues Formular übernehmen (kein Submit) PsychoEagle HTML, Usability und Barrierefreiheit 9 02.01.2007 14:51
formular an mehrere email-empfänger katarzyna PHP Tipps 2006 2 22.08.2006 07:42
formular includen samspa5 PHP Tipps 2006 13 18.03.2006 11:37
Datenbank auslesen, in Formular darstellen und �ndern PHP Tipps 2006 8 22.02.2006 17:51
PHP Formular aus einer externen Quelle füllen PHP Tipps 2007 4 21.12.2005 16:43
[Erledigt] Formular in Formular HTML, Usability und Barrierefreiheit 4 19.10.2005 12:18
leeres Formular PHP Tipps 2005-2 15 05.10.2005 16:49
[Erledigt] Formular testen .... HTML, Usability und Barrierefreiheit 7 19.09.2005 14:03
[Erledigt] PHP Formular - Daten an nächsten Schritt weiter geben - Wie? PHP Tipps 2005 14 02.01.2005 20:05
Formular nach UPDATE anzeigen PHP Tipps 2004-2 5 22.12.2004 02:06
[Erledigt] Daten in einem Formular ausgeben und ändern PHP Tipps 2004-2 7 07.12.2004 17:22
Wie implementiere ich mein Email Formular? PHP Tipps 2004-2 2 14.11.2004 17:02
Formular für Webshop PHP Tipps 2004 1 29.06.2004 23:48

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php form action=\register1.php\ method=\post\, notice: undefined variable: userid fehlermeldung, access formularaktion nächster datensatz, javascript formularaktion bei eingabe, action=\\ und passiert nix, \bitte geben sie den richtigen code ein:\, php formular post nichts passiert, attion passiert, preg_match ~\\a\\s{3,30}\\z~, $ret[\'filename\'] = \'register.tpl\';, undefined variable im textfeld eines formulars php, beim submit eines formulars passiert nichts, beim absenden eines formulars passiert nichts php, form ohne action post, html form aktion, ors obrazac p-4 bih, php passiert nichts get, localhost famsys, php, if (!preg_match(\'~\\a\\s{3,30}\\z~\', $username)) ;{ return \'der benutzername darf nur aus 3 bis 30 zeichen bestehen und \'. \'keine leerzeichen enthalten.\'; notice: undefined variable: username

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:04 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum