Ankündigung

Einklappen
Keine Ankündigung bisher.

Alter berechnen

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ambience
    hat ein Thema erstellt Alter berechnen.

    Alter berechnen

    Ich hab hier mal was altes ausgegraben, sollte sich anhand des Titels und dem Code von selbst erklären:


    PHP-Code:
    <?php 
       $tag 
    19
       
    $mon 4
       
    $jah 1985

       
    $jetzt mktime(000date('m'), date('d'), date('Y')); 
       
    $gebur mktime(000$mon$tag$jah); 
       
    $age   intval(($jetzt $gebur) / (3600 24 365)); 

       echo 
    $age ' Jahre alt'
    ?>
    Könnte man auch in eine funktion stecken..

  • nikosch
    antwortet
    Bin zu faul zum Suchen.
    Dann bist DU sicher auch zu faul für andere Sachen.

    [MOD: Thread geschlossen]

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    PHP-Code:
    $mindestalter 18;
    // ...
    if($alter $mindesalter){ 

    Einen Kommentar schreiben:


  • dahajo
    antwortet
    Zitat von Chriz Beitrag anzeigen
    Also erstens muss man bei deinem Skript wohl erst 19 sein und zweitens ist das hier "&Uuml;berpr&uuml;fe nochmal Deine Altersangabe" ja wohl eher eine Anstiftung zum Geburtsdatum fälschen? Was soll die Abfrage dann überhaupt?
    1.) Fehler schleichen sich überall ein.
    2.) &Uuml; hab ich mir einfach mal angewöhnt.
    3.) Klaro stiftet es an, das alter zu faken... dann setzt man halt eine SESSION die die IP SPERRT wenn der User nicht alt genug ist, :-p dann muss er auch erst Reconnecten.
    4.) Andersrum kannst das auch als Zugangsskript umfunktionieren... Statt das Alter zu berechnen, einfach PW und Username vergleichen... pipapo... wäre dir dankbar, wenn Du mir mal verräts wo der Fehler in der Altersberechnung ist.

    Bin zu faul zum Suchen.

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    Also erstens muss man bei deinem Skript wohl erst 19 sein und zweitens ist das hier "&Uuml;berpr&uuml;fe nochmal Deine Altersangabe" ja wohl eher eine Anstiftung zum Geburtsdatum fälschen? Was soll die Abfrage dann überhaupt?

    Einen Kommentar schreiben:


  • dahajo
    antwortet
    Wow... ziemlich viel Vorarbeit... und viele nützliche Tipps. Als nach kurzer Überlegung bin ich dann zu folgenden Resultat gekommen.

    alterscheck.php
    PHP-Code:
    <?php
    session_start
    ();
    if(
    $_REQUEST[ok]){
        
    $mindestalter 18;
        
    $form[monat]    =$_POST[monat];            ## Geburtsdatum aus dem Formular lesen ##
        
    $form[tag]        =$_POST[tag];
        
    $form[jahr]        =$_POST[jahr];
        
        
    $geburtstag mktime(0,0,0,$form[monat],$form[tag],$form[jahr]);
        
    $heute    =date("Ymd");            ## Aktuelles Datum holen ##
        
        
    $alter floor((date("Ymd") - date("Ymd"$geburtstag)) / 10000);
        if(
    $alter $mindesalter){
            
    $_SESSION[alter] = true;
            
    # Weiterleitung zur Altersgeprüften Seite
            
    header('location: http://www.meineseite/members.php');
            }else{
            echo 
    "<p>&Uuml;berpr&uuml;fe nochmal Deine Altersangabe";
            }
        }

    $monate = array("1"=>"Januar","2"=>"Februar","3"=>"M&auml;rz","4"=>"April","5"=>"Mai","6"=>"Juni","7"=>"Juli","8"=>"August","9"=>"September","10"=>"Oktober","11"=>"November","12"=>"Dezember");
    echo 
    "
    <html>
        <head>
        </head>
        <body>
        <form method=post>
            <table>
                <tr>
                    <td>Tag:</td>
                    <td>
                        <select name=\"tag\">"
    ;
                        for(
    $x=1;$x<=31;$x++){
                            if(
    $_REQUEST[tag] == $x){$sel_tag[$x] = 'selected';}
                            echo 
    "<option value=$x ".$sel_tag[$x].">".sprintf("%02d",$x)."</option>";
                            }
                  echo 
    "</select></td>
                    <td>Monat:</td>
                    <td><select name=\"monat\">"
    ;
                    foreach(
    $monate as $zelle => $wert){
                        if(
    $_POST[monat] == $zelle){$sel_monat[$zelle] = 'selected';}
                        echo 
    "<option value=$zelle ".$sel_monat[$zelle].">$wert</option>";
                        }
                 echo 
    "</select></td>
                    <td>Jahr:</td>
                    <td><select name=\"jahr\">"
    ;
                        
    # Wir gehen mal davon aus, das niemand älter als 100 wird ;-)
                        
    for($x=date("Y")-100;$x<=date("Y",time());$x++){
                        if(
    $_POST[jahr] == $x){$sel_jahr[$x] = 'selected';}
                            echo 
    "<option value=$x ".$sel_jahr[$x].">$x</option>";
                            }
                 echo 
    "</select></td>
                    <td><input type=submit value=\"O K\" name=ok></td>
                </tr>
            </table>
        </form>
        </body>
    </html>"
    ;
    ?>
    Das mit den Monaten hab ich beabsichtig so gelöst, dadurch lässt sich die Variable $monate später in eine Sprachdatei exportieren aber das ein anderes Projekt.

    check.php
    PHP-Code:
    <?php
    if($_SESSION[alter] == false){
        
    header ('location: alterscheck.php');
        }
    ?>
    und so sieht dann die members.php aus.
    PHP-Code:
    <?php
    session_start
    ();
    include(
    'check.php');
    ######## Es folgt der Seiteninhalt #########
    ?>

    Einen Kommentar schreiben:


  • David
    antwortet
    Apropos Timestamp, das müsste bei MySQL auch gehen mit DATE/TIMESTAMP Feldern. Die werden bei numerischer Darstellung auch als 20080522 abgebildet.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Ach so, sorry ich war noch bei timestamps. Clevere Lösung.

    Einen Kommentar schreiben:


  • David
    antwortet
    Zwei Ziffern für den Monat, zwei für den Tag, vier Stellen zusammen
    / 1000 -> Komma um vier Stellen nach links verschieben.
    Bleibt nur noch die Jahreszahl vor dem Komma und MonatTag nach dem Komma.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    /10000 ? *Grübel*

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    Oder einfach so
    PHP-Code:
    <?php
    $alter 
    floor((date("Ymd") - date("Ymd"$meinGebTimestamp)) / 10000);
    ?>

    Einen Kommentar schreiben:


  • Luigi
    antwortet
    PHP-Code:
     function age($age) {
        
    $Y date("Y") - date("Y"$age) - 1;
        if (
    intval(date("m"$age).date("d"$age)) < intval(date("m").date("d")))
         
    $Y++;
        return 
    $Y;
     } 
    is meine die geht auch bis jetz ganz gut

    Einen Kommentar schreiben:


  • HPR1974
    antwortet
    mktime schon aber diese Zeile
    return $age = intval(($jetzt - $gebur) / (3600 * 24 * 365));
    nicht

    Einen Kommentar schreiben:


  • fragnicht
    antwortet
    nimmt mktime die nicht automatisch mit?

    Einen Kommentar schreiben:


  • HPR1974
    antwortet
    Zitat von fragnicht Beitrag anzeigen
    mach ich ma

    PHP-Code:
    <?php
    function alter($tag,$mon,$jah){
        
    $jetzt mktime(000date('m'), date('d'), date('Y')); 
       
    $gebur mktime(000$mon$tag$jah); 
       return 
    $age   intval(($jetzt $gebur) / (3600 24 365)); 
      }
     
    ?>
    Die Funktion berücksichtigt kein Schaltjahr.

    Einen Kommentar schreiben:

Lädt...
X