Ankündigung

Einklappen
Keine Ankündigung bisher.

Registrationsscript.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Registrationsscript.

    Hi,

    ich bin gerade dabei ein Registrationsscript für eine Seite zu basteln. Dabei habe ich mehrere Probleme bzw Fragen. Das ganze geht in 3 Schritten. Ich poste am besten mal alle 3 Scripts.:

    reg.php(Ein Formular, dass man ausfüllen muss)
    PHP-Code:
    <?php
    include('include/1.php');
    echo 
    'Registrierung';
    include(
    'include/2.php');
    echo 
    '


    Um sich Daten vom Server herunterladen zu können, müssen Sie sich registrieren. Dazu einfach das Formular komplett ausfüllen und auf "Abschicken" klicken. Sie werden dann eine Email mit einem Link bekommen, auf den Sie bitte gehen um die Registration zu bestätigen.</p>



    <form method="POST" action="reg2.php?a=testen">

      <table border="0" width="100%">
        <tr>
          <td width="50%" valign="top"><font size="1" face="Tahoma"><input type="text" name="nname" size="20">

            Nachname </font>
            

    </td>
          <td width="50%" valign="top"><font size="1" face="Tahoma"><input type="text" name="vname" size="20">

            Vorname </font></td>
        </tr>
        <tr>
          <td width="50%" valign="top"><font size="1" face="Tahoma"><input type="text" name="anschrift" size="51">

            Straße &amp; Hausnummer</font></td>
          <td width="50%" valign="top"></td>
        </tr>
        <tr>
          <td width="50%" valign="top"><font size="1" face="Tahoma"><input type="text" name="plz" size="20">

            Postleihzahl</font></td>
          <td width="50%" valign="top"><font size="1" face="Tahoma"><input type="text" name="ort" size="20">

            Ort</font></td>
        </tr>
        <tr>
          <td width="50%" valign="top"><font size="1" face="Tahoma"><input type="text" name="land" size="20">

            Land</font>
            

    </td>
          <td width="50%" valign="top"></td>
        </tr>
        <tr>
          <td width="50%" valign="top"><font size="1" face="Tahoma"><input type="text" name="tele" size="20">

            Telefon</font>
            

    </td>
          <td width="50%" valign="top"></td>
        </tr>
        <tr>
          <td width="50%" valign="top"><font size="1" face="Tahoma"><input type="text" name="mail" size="20">

            Email</font></td>
          <td width="50%" valign="top"><font size="1" face="Tahoma"><input type="text" name="pwd" size="20">

            Kennwort (Achtung: Wird bei der Registrierung nicht durch Punkte verdeckt!)</font></td>
        </tr>
        <tr>
        <td width="50%" valign="top"></td>
        <td width="50%" valign="top">



    <font size="1" face="Tahoma"><input type="submit" value="Abschicken" name="B1"><input type="reset" value="Zurücksetzen" name="B2"></font></p>
    </td>
      </table>
    </form>
    '
    ;
    include(
    'include/3.php');
    ?>
    reg2.php (Hier werden die Daten in die DB eingetragen + Email mit Zufallsnummer versendet)
    PHP-Code:
    <?php


    include('include/1.php');
    echo 
    'Registrierung';
    include(
    'include/2.php');

    $nname $HTTP_POST_VARS["nname"];
    $vname $HTTP_POST_VARS["vname"];
    $anschrift $HTTP_POST_VARS["anschrift"];
    $plz $HTTP_POST_VARS["plz"];
    $ort $HTTP_POST_VARS["ort"];
    $land $HTTP_POST_VARS["land"];
    $tele $HTTP_POST_VARS["tele"];
    $mail $HTTP_POST_VARS["mail"];
    $pwd $HTTP_POST_VARS["pwd"];
    $zufall rand(1,9999999);
    include(
    'include/sql.php');
    $kennwort md5($pwd);

    if (!empty (
    $nname) AND !empty ($vname) AND !empty ($anschrift) AND !empty ($plz) AND !empty ($ort)
     AND !empty (
    $land) AND !empty ($tele)  AND !empty ($mail)  AND !empty ($pwd))


    $sql "INSERT INTO `benutzerdaten` ( `Id`, `nr`, `Kennwort`, `Nachname`, `Vorname`, `rechte`, `anschrift`, `plz`, `ort`, `tele`, `mail`, `land`, `freigeschalten` )
    VALUES (
    '', '
    $zufall', '$kennwort', '$nname', '$vname', '0', '$anschrift', '$plz', '$ort', '$tele', '$mail', '$land', '0'
    )"
    ;
    mysql_query($sql) or die(mysql_error());


    mail($mail'Registration bei ProFit''Hallo '.$vname.' '.$nname.',

    Sie haben sich bei ProFit für den Downloadbereich registriert und können nun, wenn Sie auf den folgenden Link klicken, auf die Downloads zugreifen.

    http://www.profitsoftware.de/frembs/reg3.php?a=testen&nr='
    .$zufall.'

    Vielen Dank,
    ProFit'
    "From: ProFit")
      or die(
    "Die Mail konnte nicht versendet werden.");
      echo 
    'Mail wurde versendet';
    }
    else
    { echo 
    'Bitte alle Felder ausfüllen!';}


    include(
    'include/3.php');
    ?>

    reg3.php (Der Account soll hier freigeschaltet werden)
    PHP-Code:
    <?php
    include('include/1.php');
    echo 
    'Registration';
    include(
    'include/2.php');
    include(
    'include/sql.php');
    $nr $HTTP_GET_VARS["nr"];

    $sql "UPDATE `benutzerdaten` SET `freigeschalten` = '1' WHERE `nr` = '$nr'";
    mysql_query($sql) or die(mysql_error());


    $x_query mysql_query ("SELECT Nachname, Vorname FROM benutzerdaten WHERE nr = '$nr'");
                while (
    $x mysql_fetch_array($x_query))
                            {
                            
    $nname $x["Nachname"];
                            
    $vname $x["Vorname"];
    echo 
    'Guten Tag '.$vname.' '.$nname.',



    Sie haben soeben Ihre Registration bestätigt und können sich nun einloggen um Dateien vom Server zu holen.



    Viel Spaß, ProFit'
    ;
    }

    include(
    'include/3.php');
    ?>
    Noch kurze Anmerkungen zu den include Files.
    1/2/3.php ist einfach nur der Aufbau der Seite. In sql.php sind die Daten für die Verbindung drinne.

    Meine Fragen:
    In reg2.php arbeite ich mit empty. Das Form ist aber nicht "empty", wenn einfach 1x die Leertaste gedrückt wurde. Kann man das mit irgendeiner Funktion verhindern, dass man einfach nur die Leertaste drücken muss, um das umgehen zu können?

    In reg2.php habe ich eine 7stellige Zufallsnummer, die ich nachher zum freischalten brauche, stehen. Es ist zwar eher unwahrscheinlich, dass sich eine Zahl wiederholt, aber kann ich schon beim Zufallsgen. die Nummern ausschließen, die schon benutzt wurden?

    Das wars fürs erste, aber ich habe grade das Gefühl, dass ich noch ne Frage hab, die mir aber nicht einfällt ^^, aber bitte beantwortet mir diese beiden Fragen, danke

  • #2
    Re: Registrationsscript.

    Zitat von möchtegernchegga
    In reg2.php arbeite ich mit empty. Das Form ist aber nicht "empty", wenn einfach 1x die Leertaste gedrückt wurde. Kann man das mit irgendeiner Funktion verhindern, dass man einfach nur die Leertaste drücken muss, um das umgehen zu können?
    Mit trim() zum Beispiel. http://de3.php.net/trim

    In reg2.php habe ich eine 7stellige Zufallsnummer, die ich nachher zum freischalten brauche, stehen. Es ist zwar eher unwahrscheinlich, dass sich eine Zahl wiederholt, aber kann ich schon beim Zufallsgen. die Nummern ausschließen, die schon benutzt wurden?
    Wenn du die Nummern irgendwo speicherst, überprüfe doch einfach ob sie da schon steht....

    Das wars fürs erste, aber ich habe grade das Gefühl, dass ich noch ne Frage hab, die mir aber nicht einfällt ^^
    Die Antwort ist 42.

    Kommentar


    • #3
      1. Frage: http://de2.php.net/trim

      2. Frage: Nö, du musst dir schon die Nummern merken, die du hattest, um das zuverlässig auszuschliessen. Wobei sich die Frage nach dem Sinn stellt, denn aus Sicht eines Users ist es höchst selten, dass der später nochmal die gleiche Nummer präsentiert bekommt, daher auch für andere nahezu unmöglich vorherzusagen. ABER siehe dazu den wichtigen Hinweis bei http://de2.php.net/manual/de/function.srand.php

      Kommentar


      • #4
        naja okay danke fürs erste. das mit trim funzt recht gut. bei den zufallsgen hoff ich etz einfach dass da nix doppelt kommt ^^ und wenn, dann wäre es jetzt auch nicht sooo schlimm. bei weiteren fragen meld ich mich wieder

        Kommentar


        • #5
          Markiert das Feld in der Datenbank als unique und mysql wird meckern, wenn ein Wert doppelt vorkommt
          -> Fehlercode mit mysql_errno abtesten und ggf neue Zahl ermitteln lassen.

          Kommentar


          • #6
            -> Fehlercode mit mysql_errno abtesten und ggf neue Zahl ermitteln lassen.

            ???

            das mit unique klingt gut. kann man das dann einfach so machen, dass die site neugeladen wird, wenn der fehler aufkommt?

            Kommentar


            • #7
              Zitat von möchtegernchegga
              -> Fehlercode mit mysql_errno abtesten und ggf neue Zahl ermitteln lassen.

              ???

              das mit unique klingt gut. kann man das dann einfach so machen, dass die site neugeladen wird, wenn der fehler aufkommt?
              Kann man. Sinnvoller wäre es aber das ganze bereits im Skript zu regeln.

              Sprich: Nimm eine while-Schleife, die dann solange läuft, wie eine bereits
              vorhandene Nummer erzeugt wurde.

              Kommentar


              • #8
                ja das hatte ich mir schon überlegt, nur das wird dann, wenn scho so 50 leute angemeldet sind eine zeit lang dauern, oder nicht? und der typ, für den ich die site mach, der will alles eher schneller haben...

                Kommentar


                • #9
                  Zitat von möchtegernchegga
                  ja das hatte ich mir schon überlegt, nur das wird dann, wenn scho so 50 leute angemeldet sind eine zeit lang dauern, oder nicht? und der typ, für den ich die site mach, der will alles eher schneller haben...
                  Wieso? Wie bereits von Dir bemerkt, ist es ziemlich unwahrscheinlich, dass es
                  zu einer dopppelten Nummer kommt. Dass die Schleife mehrfach durchlaufen
                  wird, ist also die Ausnahmen.

                  Btw: Für 50 Einträge wird es sicherlich "eine zeit lang dauern", aber eine
                  ziemlich kurze Zeit. 50 Einträge sind so gut wie nichts...

                  Kommentar


                  • #10
                    Die gesamte Seite neu laden mit allem Drumherum (request, webserver, php webserver, Antwort) soll nicht länger dauern als die direkte Behandlung innerhalb des Skripts?

                    Du solltest halt ein Verfahren wählen, das sicher und vorhersagbar zu einem Ende kommt.

                    Warum darf die Zufallszahl eigentlich nicht doppelt vorkommen?

                    Kommentar


                    • #11
                      naja es wäre besser, wenn sie nich öfter vorkommt, da wenn sich jmd einloggt, danach nochmal jmd, der dieselbe zufallsnummer wie der vorherige hat und dann auf den link in der mail klickt, dann schaltet er beide frei. wären scho einige zufälle die da aufeinandertreffen, aber wer weiß...

                      Kommentar


                      • #12
                        Wofür ist denn dann das Feld `Id` in der Tabelle `benutzerdaten`?
                        Im link einfach die Id mitschicken und dann, id und Zufallszahl auf Übereinstimmung prüfen.

                        Kommentar


                        • #13
                          naja id is eigtl immer da um was eindeutig identifizieren zu können, sowas sollte immer dabei sein, hab ich gelernt

                          jo das is ne idee, werd ich machen.

                          Kommentar


                          • #14
                            naja id is eigtl immer da um was eindeutig identifizieren zu können, sowas sollte immer dabei sein, hab ich gelernt
                            Ja eben, das war auch eine rethorische Frage

                            Kommentar

                            Lädt...
                            X