PHP-Script, das die Userdaten bei der Registrieriung in eine Datenbank speichert

  • Sers!!!:-D:-D

    Ich habe einige Probleme mit meinem PHP-Script.

    Ich möchte aus einem Formular die Daten auslesen lassen und in eine Datenbank speichern.

    Ich habe schon mit PHPmyAdmin eine Tabelle['CFE-Datenbank'] mit Spalten['vorname', 'nachname', 'e-mail', 'strasse', 'hausnummer', 'plz', 'ort'] angelegt.

    Nur das PHP-Script funktioniert nicht?!?!?!

    [Wundert euch nicht, ich stell die HP schon online, wenn sie fertig ist. PHPmyAdmin ist nur zum Probieren im Moment da:-D:-D:-D:-D:-D:-D:-D]

    Hier mein HTML:

    <!------------------------Start---------------------------------------------->

    <html>

    <head>

    <style type="text/css">

    .background {
    background-color: #000000;
    color: #00bbaa;
    width: 100%;
    height: 100%;
    font-family: Comic Sans MS;
    padding-right: 100px;
    }

    a {
    color: #00000f;
    text-decoration: none;

    }

    a:hover {
    color: #00bbaa;
    }


    .rahmen {
    border-style: solid;
    border-color: #00bbaa;
    padding: 0px;
    margin: 0px;
    }

    a.back {

    color: #ffffff;
    margin: 10px;
    text-align: right;
    }

    a.back:hover {

    color: #00bbaa;
    text-align: left;
    }

    a.back:visited {

    color: #ff0000;
    margin: 20px;
    }

    a.back:visited:hover {
    color: #00bbaa;
    margin: 20px;
    }

    input {
    border: 2px solid #ffffff;
    background-color: 555556;
    color: #00bbaa;
    font-family: Comic Sans MS;
    }

    </style>
    <title>

    Carpfishingforever.de | Registrierung

    </title>

    </head>

    <body bgcolor= "gray">
    <div class= "rahmen">
    <div class="background">
    <center>

    <b>
    <br>
    <font size='6'>

    Registrierung

    </font>

    </b>


    <br>
    <br>
    <br>
    <br>
    <center>

    <form action= "regist.php" method= "post">

    Vorname: &nbsp;&nbsp;&nbsp;&nbsp;<input type= "text" name= "vorname">
    <br>
    <br>
    Nachname: &nbsp;&nbsp;&nbsp;&nbsp;<input type= "text" name= "nachname">
    <br>
    <br>
    E-Mail: &nbsp;&nbsp;&nbsp;&nbsp;<input type= "text" name= "e-mail" size= "25">
    <br>
    <br>
    Stra&szlig;e:&nbsp;&nbsp;&nbsp;&nbsp;<input type= "text" name= "strasse">&nbsp;&nbsp;&nbsp;<input type= "int" name= "hausnummer" size= "4" maxlength= "5">
    <br>
    <br>
    PLZ:&nbsp;&nbsp;&nbsp;&nbsp;<input type= "int" name= "plz" maxlength="5" size= "4">
    <br>
    <br>
    Ort: &nbsp;&nbsp;&nbsp;&nbsp;<input type= "text" name= "ort">
    <br>
    <br>

    <input type= "submit" value= "Anmelden"><input type= "reset" value= "Abbruch">

    </center>
    <br>
    <br>
    <br>
    <br>
    <p align= "right">
    <a href= "index.html" class= "back" alt= "Sers"> Zur&uuml;ck </a>
    </p>
    </div>

    </div>

    </body>

    </html>

    <!-----------------------------Ende--------------------------------------------->

    Und mein PHP:^^
    <!---------------------------Start---------------------------------------------->

    <?php

    $vorname= $_GET['vorname'];
    $nachname= $_GET['nachname'];
    $e-mail= $_GET['e-mail'];
    $strasse= $_GET['strasse'];
    $hausnummer= $_GET['hausnummer'];
    $plz= $_GET['plz'];
    $ort= $_GET['ort'];

    if((isset($_GET['vorname'], $_GET['nachname'], $_GET['e-mail'], $_GET['strasse'], $_GET['hausnummer'], $_GET['plz'], $_GET['ort'],));
    AND
    if($vorname AND $nachname AND $e-mail AND $strasse AND $hausnummer AND $plz AND $ort > 0)
    {
    if(mysql_query('INSERT INTO
    CFE-Datenbank
    (vorname, nachname, e-mail, strasse, hausnummer, plz, ort)
    VALUES
    ("'.htmlspecialchars($vorname, ENT_QUOTES).'",
    "'.htmlspecialchars($nachname, ENT_QUOTES).'",
    "'.htmlspecialchars($strasse, ENT_QUOTES).'",
    "'.htmlspecialchars($hausnummer, ENT_QUOTES).'",
    "'.htmlspecialchars($plz, ENT_QUOTES).'",
    "'.htmlspecialchars($ort, ENT_QUOTES).'");
    ')){

    echo 'Vielen Dank, sie sind jetzt registriert.
    <br>
    Ihnen wird in Kürze ein Passwort zugesandt.
    <br>
    <br>
    <br>
    <a href= "index.html"> Zur&uuml;ck </a>';

    else {
    echo 'Technische Probleme. Im Moment könne sie sich nicht registrieren! <a href="index.html">Zur&uuml;ck</a> '.mysql_error();
    }

    ?>

    <!----------------------------------Ende------------------------------------->


    Ich hoffe, ihr könnt mir helfen^^

    Mfg und Thx schon mal

    [C]arp[h]unter:!:

    P.S.: Ich weiß noch nicht, wie ich das Passwort dem jeweiligen User zusende.
    Es wäre nicht so schlimm immer das gleiche Passwort zu verwenden, da man dies nur für den Zugang zu einer Bildergallerie benötigt [Die mit HTACCESS geschützt ist => Ich brauch des ganze Zeug nur für 'n HTACCESS-Pass^^]

    Wer ist dieser LAN und warum macht er so viele Parties?
    Internet, gibt's den Scheiß immer noch?
    Warum passieren mir nur Sachen, die sonst nur dummen Leuten passieren? :: NEIN!

    Einmal editiert, zuletzt von [C]arp[h]unter (10. März 2011 um 09:09)

  • Das erste Problem: Du sendest das Formular mittels POST und fragst die Daten im PHP-Script mit GET ab... Deine Überprüfung auf leere Angaben sieht auch irgendwie strange aus.

    Don't follow me, I run into walls.

  • Also:

    Ich hab mich jetz mal hingesetzt und ein wenig geschrieben:

    Sieht doch schon viel besser aus, oder?:


    <?php
    error_reporting(E_ALL);

    //Erst mal die von PHP-Escapten Variablen zurück"verwandeln"

    //stripslashes auch in Arrays ausfuehren...
    function array_stripslashes(&$var){
    if(is_string($var)) {
    $var=stripslashes($var);
    } elseif(is_array($var)) {
    foreach($var AS $key => $wert) {
    array_stripslashes($var[$key]);
    }
    }
    }

    //Alle von PHP gesetzten Backslashes entfernen
    if((function_exists('get_magic_quotes_gpc') AND get_magic_quotes_gpc()) OR
    (ini_get('magic_quotes_sybase') AND (strtolower(ini_get('magic_quotes_sybase'))!="off"))){

    array_stripslashes($_GET);
    array_stripslashes($_POST);
    }

    //Bereits hier definieren wir die Funktion, die Passwoerter generiert.
    # Ein Passwort der Laenge (int) $length erzeugen
    ## Rueckgabewerte: string|false
    ## Version 10.01.04.20
    function create_pwd ($length){
    //Die Zeichen aus der Variable $charset koennen im Passwort vorkommen.
    $charset=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
    'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
    '1','2','3','4','5','6','7','8','9','0','!','$','%','(',')','{','}','[',']','=','?','+','*','#','-','_','.',',',';',':','/');
    $count=count($charset);
    $pwd='';
    $limit=$count-1;
    for($i=0;$i<$length;$i++){
    $key=mt_rand(0,$limit);
    $pwd.=$charset[$key];
    }
    return $pwd;
    }


    echo '<html>

    <head>

    <style type="text/css">

    .background {
    background-color: #000000;
    color: #00bbaa;
    width: 100%;
    height: 100%;
    font-family: Comic Sans MS;
    }

    a {
    color: #00000f;
    text-decoration: none;

    }

    a:hover {
    color: #00bbaa;
    }


    .rahmen {
    border-style: solid;
    border-color: #00bbaa;
    padding: 0px;
    margin: 0px;
    }

    a.back {

    color: #ffffff;
    margin: 10px;
    text-align: right;
    }

    a.back:hover {

    color: #00bbaa;
    text-align: left;
    }

    a.back:visited {

    color: #ff0000;
    margin: 20px;
    }

    a.back:visited:hover {
    color: #00bbaa;
    margin: 20px;
    }

    </style>
    <title>

    Carpfishingforever.de | Registrierung

    </title>

    </head>

    <body bgcolor= "gray">
    <div class= "rahmen">
    <div class="background">
    <center>

    <b>
    <br>
    <font size="6">

    Registrierung

    </font>

    </b><br><br>';

    if(!isset($_POST['vorname'], $_POST['nachname']) OR strlen(trim($_POST['vorname']))<3 OR strlen(trim($_POST['nachname']))<3){
    echo 'Sie haben den Namen vergessen!';
    } elseif(!isset($_POST['e-mail']) OR strlen(trim($_POST['e-mail']))<5){
    echo 'Bitte tragen Sie die E-Mail Adresse ein!';
    } elseif(!isset($_POST['strasse']) OR strlen(trim($_POST['strasse']))<2) {
    echo 'Bitte geben Sie Ihre Stra&szlig;e an!';
    } elseif(!isset($_POST['hausnummer']) OR !is_numeric($_POST['hausnummer']) OR $_POST['hausnummer']<1) {
    echo 'Bitte geben Sie Ihre Hausnummer an!';
    } elseif(!isset($_POST['plz']) OR !is_numeric($_POST['plz']) OR $_POST['plz']<1) {
    echo 'Bitte geben Sie Ihre Postleitzahl an!';
    } elseif(!isset($_POST['ort']) OR strlen(trim($_POST['ort']))<2) {
    echo 'Bitte geben Sie Ihren Wohnort an!';
    } elseif(!isset($_POST['agbs']) {
    echo 'Bitte akteptieren Sie die AGBs!';
    } else {
    //Ab hier passt alles, aber noch htmlentities anwenden!
    // htmlspecialchars wandelt nur Anfuehrungszeichen um,
    // htmlentities aber wirklich alles, also auch ä,ü,ö,ß und so weiter...
    $vorname = htmlentities($_POST['vorname'], ENT_QUOTES);
    $nachname = htmlentities($_POST['nachname'], ENT_QUOTES);
    $email = htmlentities($_POST['e-mail'], ENT_QUOTES);
    $strasse = htmlentities($_POST['strasse'], ENT_QUOTES);
    $hausnummer= (int) $_POST['hausnummer']; //(int) Konvertiert in Integer
    $plz = (int) $_POST['plz']; //(int) Konvertiert in Integer
    $ort = htmlentities($_POST['ort'], ENT_QUOTES);


    //Erstmal zur Datenbank verbinden... (Das Passwort und so musst du eintragen :) )
    define('MYSQL_ADDR', '127.0.0.1');
    define('MYSQL_USER', 'root');
    define('MYSQL_PASS', 'passwort');
    define('MYSQL_DATABASE', 'datenbank');

    if(!mysql_connect(MYSQL_ADDR, MYSQL_USER, MYSQL_PASS)){
    echo 'Konnte nicht mit der Datenbank verbinden. '.mysql_error();
    } elseif(!mysql_select_db(MYSQL_DATABASE)){
    echo 'Konnte die Datenbank nicht ausw&auml;hlen. '.mysql_error();
    } else {
    //Jetzt sind wir mit der Datenbank verbunden und koennen dort eintragen...

    //Jetzt generieren wir ein Passwort. Die Funktion wurde bereits ganz oben definiert.
    $passwort = create_pwd(10);

    //Um den mysql_query-Befehl nicht so unübersichtlich zu gestalten speichern wir den Befehl erst mal zwischen...
    //Auch das Passwort wird hier schon eingetragen...
    $sql='INSERT INTO
    CFE-Datenbank
    (vorname, nachname, strasse, hausnummer, e-mail, plz, ort, passwort, datum)
    VALUES
    ("'.$vorname.'",
    "'.$nachname.'",
    "'.$strasse.'",
    "'.$hausnummer.'",
    "'.$email.'",
    "'.$plz.'",
    "'.$ort.'",
    "'.$passwort.'",
    "'.time().'")';
    //Ich habe noch das Datum eingefuegt, weil das immer interessant sein kann...
    //Jetzt fuehren wir den Befehl aus...
    if(mysql_query($sql)){
    //Erst wenn wir eingetragen haben schicken wir die Mail mit dem Passwort...
    $empfaenger = $email;
    $betreff = 'Carpfishingforever - Ihr Passwort';
    //Bei der Nachricht nicht einrücken, da das sonst in der Mail auch so ist!
    $nachricht = 'Guten Tag '.$vorname.' '.$nachname.',
    hiermit erhalten Sie Ihr Passwort f&uuml;r Carpfishingforever.de. Es lautet '.$passwort.'
    bitte merken Sie es sich oder schreiben es irgendwo auf.
    MfG Carpfishingforever.de';
    $header = 'From: Fiedler.Oliver@web.de' . "\r\n" .
    'Reply-To: Fiedler.Oliver@web.de' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
    if(!mail($empfaenger, $betreff, $nachricht, $header)){
    echo 'Ihr Passwort konnte leider nicht versendet werden. Bitte kontaktieren Sie den Webmaster.<br><br>';
    }
    echo 'Vielen Dank, sie sind jetzt registriert.
    <br>
    Ihnen wird in Kürze ein Passwort zugesandt.';
    } else {
    echo 'Registrieren aufgrund technischer Probleme zur Zeit nicht m&ouml;glich. '.mysql_error();
    }
    }
    }


    echo '</center>
    <br>
    <br>
    <br>
    <br>
    <p align= "right">
    <a href= "regist.html" class= "back" alt= "Sers"> Zur&uuml;ck </a>
    </p>
    </div>

    </div>

    </body>

    </html>';


    ?>

    Das Script beinhaltet auch noch einen Passwortgenerator.

    Müsste eigentlich funzen, oder?

    Mfg

    [C]arp[h]unter

    Wer ist dieser LAN und warum macht er so viele Parties?
    Internet, gibt's den Scheiß immer noch?
    Warum passieren mir nur Sachen, die sonst nur dummen Leuten passieren? :: NEIN!