Time Funktion

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

  • Time Funktion

    Ich versuche geraden ein Anmeldescript für ein Online-Spiel zu schreiben, wo die User ihren Nick (Benuternamen), richtigen Namen und eMail Adresse eintragen müssen, um in die nächste Stufe zu kommen. Diese Anmeldung benutze ich, um den Spieler für jeder erreicht Phase mit Punkten zu belohnen. (Gummipunkte)

    Soweit funktioniert auch alles, aber in meiner Datenbank-Tabelle in der Time-Spalte stehen nur 14 Nullen und keine Zeit. Damit erkennt mein Punkte-Modul aber auch die Anmeldung nicht und es werden keine Punkte vergeben.

    Nun habe ich im php nachgesehen, wie ich die Zeit eintragen kann und wenn ich das richtig verstanden habe gibt es die Time Funktion = time() und habe die habe ich versucht in die Variable zeit zu stecken und dann mit dem Insert in die DB zu übergeben, aber es geht einfach nicht.

    Kann mir vielleicht jemand dabei helfen?
    Genauso würde ich gern noch eine IP-Sperre einbauen (werde mir auch gleich noch mal das Tutorial reinziehen); vielleicht hier noch ein Tipp für mich??

    PHP-Code:
    // hier wird getestet, ob der Nickname, die Mailadresse und Vor und Nachname eingetragen wurde
    if($_POST['nick']!='' && $_POST['email']!='' && $_POST['nachname']!='')
    {

    // erst dann wird eine Meldung und die Daten nochmal ausgegeben
    echo "Sie wurden in der Datenbank mit fogenden Daten Eingetragen:<br />";
    echo 
    $_POST['nick']."<br /> ".$_POST['nachname']."<br /> ".$_POST['email']."<br />";

    // Der SQL Befehl, der die Formulardaten in die Datenbank einträgt
    $zeit time();  //hier fülle ich die Variable zeit mit den Time-daten
    $sql "
    INSERT INTO 
    $table
    (nick, nachname, email, time, pass, kommentar)
    VALUES(
    '"
    .$_POST['nick']."',
    '"
    .$_POST['nachname']."',
    '"
    .$_POST['email']."',
    '"
    .$zeit['time']."',
    '"
    .$_POST['passwd']."',
    '"
    .$_POST['kommentar']."'
    )"
    ;
    //Der Rückgabewert aller Eingabefelder wird in einer Variable ($ergebnis) gespeichert
    $ergebnis mysql_query($sql);

    //und dieses dann auswerten
    if($ergebnis == TRUE)
    {

    // Wenn alles OK war wird die Meldung ausgegeben
    echo "Ihre Daten sind gespeichert! "

  • #2
    PHP-Code:
    $zeit time();  //hier fülle ich die Variable zeit mit den Time-daten

    '".$zeit['time']."'// hier liest du eine unbekannte variable 



    wenn schon, dann:

    PHP-Code:
    $zeit['time'] = time(); 

    Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
    sondern mit den Augen das Manual zu lesen.

    Kommentar


    • #3
      abgesehen davon ist time in mysql ein reserviertes wort.

      ausserdem würde ich den feldtyp TIMESTAMP von mysql verwenden. der setzt automatisch die aktuelle zeit in der DB.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        ausserdem würde ich den feldtyp TIMESTAMP von mysql verwenden. der setzt automatisch die aktuelle zeit in der DB.
        Das habe ich gemacht, aber es stehen immer nur Nullen drinn,
        auch wenn ich die Tipp von xManUx einfüge und mein Code dann so aussieht:
        PHP-Code:
        // Der SQL Befehl, der die Formulardaten in die Datenbank einträgt
        $zeit['time'] = time();
        $sql "
        INSERT INTO 
        $table
        (nick, nachname, email, time, pass, kommentar)
        VALUES(
        '"
        .$_POST['nick']."',
        '"
        .$_POST['nachname']."',
        '"
        .$_POST['email']."',
        '"
        .$zeit['time']."',
        '"
        .$_POST['passwd']."',
        '"
        .$_POST['kommentar']."'
        )"

        funktioniert das ganze nicht. Woran kann das den liegen.
        Vielleicht habt ihr ja noch eine bessere Idee wie ich die Zeit in die DB bekomme.

        Kommentar


        • #5
          lies dir meinen post noch einmal gaaaaaanz langsam durch. insbesondere den ersten satz!

          auch ist ein mysql_error() bei der fehlersuche behilflich.
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            @Ricola: Debugging etc. hilft dir.....
            Und mal nebenbei in keiner einzigen Programmiersprache kann vom Compiler bzw. Interpreter vordefinierte Namen nochmals verwenden, da diese ansonsten nicht mehr eindeutig wäre und die Übersetzung raten müsste was nun eigentlich gemeint ist....
            [color=blue]MfG Payne_of_Death[/color]

            [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
            [color=red]Merke:[/color]
            [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

            Murphy`s Importanst LAWS
            Jede Lösung bringt nur neue Probleme
            Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
            In jedem kleinen Problem steckt ein großes, das gern raus moechte.

            Kommentar


            • #7
              PHP-Code:
              // hier wird getestet, ob der Nickname, die Mailadresse und Vor und Nachname eingetragen wurde
              if($_POST['nick']!='' && $_POST['email']!='' && $_POST['nachname']!=''
              Sollte du nicht zumindest die email adresse auf ihre richtigkeit überprüfen?
              ausserden ist dein skript für css (cross stie scripting) anfällig. stell dir vor du
              verwendest ein "wer ist online" skript und einer meldet sich mit den nick
              PHP-Code:
              <script>location.href="kopie_vom_login_deines_spiels.php"</script
              an. anstatt den nick bekommen die anderen user die seite des "hackers" zu
              sehen.

              da helfen dir die funktionen
              http://de.php.net/manual/de/function...ecialchars.php
              http://de.php.net/manual/de/function.strip-tags.php
              weiter. wobei man bei der funktion strip_tags aufpassen sollte, weil die funktion
              vor php version < 4.3.9 ein schhönheitsfehler hatte. die funktion
              http://de.php.net/manual/de/function.trim.php
              wär auch nicht verkehrt.

              desweiteren kann ich nirgendswo erkennen, das überprüft wird ob der nick
              bzw. die email in der tabelle schon vorhaden ist. Und bevor du die daten in
              der tabelle speicherst würde ich noch die funktion
              http://de.php.net/manual/de/function...ape-string.php
              einsetzen.

              PHP-Code:
              //und dieses dann auswerten
              if($ergebnis == TRUE
              Ich weiss jetzt nicht ob das funktioniert, aber
              die funktion
              http://de.php.net/manual/de/function...ected-rows.php
              wär dafür geigneter. meinst du nicht auch?

              Ich hoffe du verstehst einigermaßen was ich dir stichwortartig versuche zu
              erklären. denn was du momentan lieferst ist für ein online spiel zu
              schlampig und es könnte ein böses erwachen geben.

              cheers
              Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
              PHP Sicherheit
              PHPUnit[1-2]
              Professionelle Softwareentwicklung mit PHP 5
              Professionelle PHP 5-Programmierung

              Kommentar


              • #8
                das:

                !='' kann man sich eigentlich ersparen, wenn man empty() benutzt. Oder man kann gleich bei dem Aufwand: strlen($var) > 3 benutzen.

                wenn schon Emailüberprüfung dann:

                PHP-Code:
                if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email))
                { echo 
                "Fehler"; } 

                wollen ja nicht noch mehr solche http://www.thephpwtf.com/
                Zuletzt geändert von xManUx; 12.12.2004, 19:36.

                Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                sondern mit den Augen das Manual zu lesen.

                Kommentar


                • #9
                  Original geschrieben von xManUx
                  PHP-Code:
                  if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email))
                  { echo 
                  "Fehler"; } 
                  noch besser wäre
                  PHP-Code:
                  /******************************************************************
                  *Funktion:    Die Funktion validEmail überprüft die E-Mail auf ihre 
                  *            richtigkeit. Ist die E-Mail Adresse, vom Syntax, soweit richtig, 
                  *            sucht es im DNS nach MX-Datensätzen die zu hostname 
                  *            passen.
                  *Argumente:    E-Mail Adresse.
                  *Ausgabe:    True oder False;
                  *******************************************************************/
                      
                  function isEmail($email
                      {
                          
                  $bool false;
                          
                  $legalEmail "/^[a-z0-9-_]([-_\.]?[a-z0-9-_])*@[0-9a-z][-.0-9a-z]*\.[a-z]{2,4}[.]?$/i";

                          if (
                  preg_match($legalEmail$email)) {
                              
                  $addr trim($email);
                              list(
                  $user$host) = split("@"$addr);
                              
                  $bool getmxrr($host$arr);
                          }    
                          return 
                  $bool;
                      } 
                  cheers
                  Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
                  PHP Sicherheit
                  PHPUnit[1-2]
                  Professionelle Softwareentwicklung mit PHP 5
                  Professionelle PHP 5-Programmierung

                  Kommentar


                  • #10
                    Borrr.... jetzt raucht mir aber der Kopf.

                    Hätte vielleicht schreiben sollen, das dies mein erste Script ist, was ich allein schreibe (habe zwar schon einige für meine Bedürfnisse modifiziert, aber noch nicht so innig).

                    Das mit der email abfrage hatte ich auch schon vor, wuste aber nicht wo ich das einsetzen sollte (das weiß ich aber nun auch nicht!).

                    Klarr wollte ich auch noch ne Abfrage nach dem Nick machen, ob dieser schon vorhanden ist, aber auch da muss ich noch etwas lesen....)

                    Nun mal alles der reihe nach.
                    Das mit der Zeit (timestamp) habe ich immer noch nicht gelöst.
                    Wenn ich das nicht hinbekomme funktioniert ja nicht mal die Voraussetzung für die Punktevergabe.

                    Also:
                    Ich habe ja nun die Werte aus einem Fornular.
                    PHP-Code:
                    <form action="index.php" method="post">
                    <
                    table width="75%"  border="0" cellspacing="10" cellpadding="0">
                      <
                    tr>
                        <
                    td width="30%">* Benutzername: </td>
                        <
                    td><input type="text"  size="40"  style="background-color:#e5e5e5" name="nick"></td>
                      </
                    tr>
                      <
                    tr>
                        <
                    td width="30%">* Vor Nachname:</td>
                        <
                    td><input type="text" size="40" style="background-color:#e5e5e5" name="nachname"></td>
                      </
                    tr>
                      <
                    tr>
                        <
                    td width="30%">* e-Mail:</td>
                        <
                    td><input type="text" size="40" style="background-color:#e5e5e5" name="email"></td>
                      </
                    tr>
                    <!--
                        <
                    tr>
                        <
                    td width="15%">Datum Zeit:</td>
                        <
                    td><input type="hidden" name="time" value=$zeit></td>
                      </
                    tr>
                    -->
                          <
                    tr valign="top">
                        <
                    td width="30%">Kommentar:</td>
                        <
                    td><textarea cols="30" rows="5" style="background-color:#e5e5e5" name="kommentar"></textarea></td>
                      </
                    tr>
                      <
                    tr>
                        <
                    td colspan="2"><div align="center"><input type="submit" name="anmelden" value="anmelden"></div></td>
                      </
                    tr>
                    </
                    table>
                    </
                    form
                    alle Werte werden ja auch in die DB eingetragen, aber die aktuelle Zeit (Tag+Zeit) nicht.
                    Jetzt habe ich versucht die Zeit mittels
                    $zeit['time'] = time(); in die DB zu schreiben, siehe Code.
                    Aber es geht immer noch nicht.
                    PHP-Code:
                    $zeit['time'] = time();
                    $sql "
                    INSERT INTO 
                    $table
                    (nick, nachname, email, time, pass, kommentar)
                    VALUES(
                    '"
                    .$_POST['nick']."',
                    '"
                    .$_POST['nachname']."',
                    '"
                    .$_POST['email']."',
                    '"
                    .$zeit['time']."',
                    '"
                    .$_POST['passwd']."',
                    '"
                    .$_POST['kommentar']."'
                    )"

                    Danach habe ich es in dem Formular mit <td><input type="hidden" name="time" value=$zeit></td> versucht, aber auch nichts.

                    Hilfe, was mache ich falsch?

                    Die geposteten Links werde ich auch noch lesen. Dafür schon mal vielen Dank.

                    Kommentar


                    • #11
                      Original geschrieben von Abraxax
                      abgesehen davon ist time in mysql ein reserviertes wort.

                      auch ist ein mysql_error bei der fehlersuche behilflich
                      Zuletzt geändert von xManUx; 12.12.2004, 20:53.

                      Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                      sondern mit den Augen das Manual zu lesen.

                      Kommentar


                      • #12
                        Ohh ist das gemein....
                        habe das mit dem Füllen der Zeit (Timestamp) gelöst.

                        PHP-Code:
                        $sql "
                        INSERT INTO 
                        $table
                        (nick, nachname, email,  pass, kommentar)
                        VALUES(
                        '"
                        .$_POST['nick']."',
                        '"
                        .$_POST['nachname']."',
                        '"
                        .$_POST['email']."',
                        '"
                        .$_POST['passwd']."',
                        '"
                        .$_POST['kommentar']."'
                        )"

                        Nach langem lesen wurde mir klar, das die Daten nicht übergeben werden müssen (nur beim Ubdate), also brauch ich die Spalte auch nicht mit time() füllen.
                        Das soll ein NewPHP/SQL_er wissen. OK jetzt weiß ich es.

                        Weiter zur nächsten Aufgabe:
                        DB kontrollieren, ob User schon vorhanden ist.

                        Kommentar


                        • #13
                          Selbst bei einem Update muss das Feld nicht angeben werden:

                          Eine TIMESTAMP-Spalte ist nützlich, um Datum und Zeit einer INSERT- oder UPDATE-Operation zu speichern, weil sie automatisch auf das Datum und die Zeit der jüngsten Operation gesetzt wird, wenn Sie nicht selbst einen Wert zuweisen.
                          Beschäftige dich mal mit dem Mysql Manual....
                          [color=blue]MfG Payne_of_Death[/color]

                          [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                          [color=red]Merke:[/color]
                          [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                          Murphy`s Importanst LAWS
                          Jede Lösung bringt nur neue Probleme
                          Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                          In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                          Kommentar


                          • #14
                            ausserdem php-time() != mysql-TIMESTAMP
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              @Payne_of_Death
                              Beschäftige dich mal mit dem Mysql Manual....
                              Das mache ich ja schon, aber wenn man gleichzeitig auch noch etwas Umsetzen muss geht das nur bedingt (zeitlche Einschränkung).
                              Aber ich lerne schnell und hoffe trozdem noch ein wenig Hilfe von Euch zu bekommen, denn man kann halt nicht alles in so kurzer Zeit lernen.

                              @schlimmerfinger
                              Dein Tipp mit der function isEmail($email) finde ich toll, aber ich weiß jetzt nicht wo ich das einsetzen muß, damit das noch vor dem DB Eintrag kontrolliert wird.

                              Kommentar

                              Lädt...
                              X