kostenloser Webspace werbefrei: lima-city


Php Zeitsperre

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    Hallo,
    ich habe momentan folgendes Problem. Es werden auf einer meiner Homepages Daten eingegeben. Um genau zu sagen handelt es sich um Nummern. Jeder Benutzer hat eine und muss sie öfters eingeben. Dies sollte er jedoch nur jede Minute einmal können.
    Wie kann ich eine Zeitsperre von 60 Sekunden einrichten so das er eine Nummer nur einmal alle 60Sekunden eingeben kann. Die Sperre muss sich jedoch auf die Nummer beziehen. Die eingabe für den Computer oder den Benutzer für 60 Sekunden zu sperren geht nicht, da manche Benutzer auch mehrere Nummern haben. Wie kann man das am besten lösen.
    In der mysql Tabelle wird jeweils das Datum und die Uhrzeit mit abgespeichert.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du trägst bei den Userdaten den Timestamp mit ein, bei einer neuen Eintragung fragst du erst den Timestamp ab, rechnest 60 Sec drauf und prüfst, ob der jetzige Timestamp größer oder gleich dem bisherigen + 60 ist.
  4. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    vertico schrieb:
    Du trägst bei den Userdaten den Timestamp mit ein, bei einer neuen Eintragung fragst du erst den Timestamp ab, rechnest 60 Sec drauf und prüfst, ob der jetzige Timestamp größer oder gleich dem bisherigen + 60 ist.

    Kann ich denn Uhrzeiten auch einfach mit
    <
    vergleichen?
  5. Und sollte er größer sein wird einfach der aktuelle per update eingespeist und was auch immer ausgeführt und schon klappt das.

    Naja den Timestamp schon
    Ist halt die Frage wie Zeit und Datum in der Tabelle gespeichert werden.
  6. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    reimann schrieb:
    Naja den Timestamp schon
    Ist halt die Frage wie Zeit und Datum in der Tabelle gespeichert werden.

    So:
    2010-09-12 18:06:11

    Funktioniert das damit?
  7. Einfach nur < reicht ja nicht, dann wäre eine neuer Eintrag bereits 1 Sec später möglich. Und auf eine normale Uhrzeit-Angabe 60 Sek drauf zu zählen ist aufwendig, da es ja kein reiner Int-Wert sondern ein String mit : und - ist. Daher würde ich den Timestamp nehmen.
  8. no-smoke schrieb:
    reimann schrieb:
    Naja den Timestamp schon
    Ist halt die Frage wie Zeit und Datum in der Tabelle gespeichert werden.

    So:
    2010-09-12 18:06:11

    Funktioniert das damit?

    nein.
    normalerweise wandelst Du Datum+Uhrzeit um in die Sekunden die seit dem 1.1.1970 0:00 Uhr vergangen sind.
    Dadurch erhältst Du immer eine fortlaufende Zahl mit der Du vergleiche anstellen kannst.
    Ließ Dir das hier von www.schattenbaum einmal zu dem Thema durch.
  9. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    Wie generiere ich denn nun so einen Wert im Fall von mysql? Bisher füge ich in die Tabelle mittels PHP Befehl
    NOW(),
    Das Datum und die Zeit ein. Wie mache ich das anders? Der Befehl
    time()
    scheint nicht zu funktionieren.
    Und viel wichtiger noch, wie kann ich dann die Differenz errechnen?
  10. du musst schon mit time() arbeiten, das ist die Funktion die php dafür bereitstellt.

    du musst in die datenbank " time()+60" schreiben. Und wenn du die zeile ausliest prüfst du ob der wert größer oder kleiner time() ist.
  11. no-smoke schrieb:
    Wie generiere ich denn nun so einen Wert im Fall von mysql? Bisher füge ich in die Tabelle mittels PHP Befehl
    NOW(),
    Das Datum und die Zeit ein. Wie mache ich das anders? Der Befehl
    time()
    scheint nicht zu funktionieren.
    Und viel wichtiger noch, wie kann ich dann die Differenz errechnen?


    Geht auch mit NOW().
    Wandel es in php mit strtotime in einen UNIX-timestamp (UNIX-timestamp =sekunden seit dem 1.1.1970 ) um.
    diesen umgewandelten timeestamp aus sql vergleichst du mit der aktuellen zeit (die du auch umgewandelt hast).

    Wie es ja in meinem vorherigen link beschreiben steht bekommst Du die Aktuelle zeit mit:
    <?php
      $timestamp = time();
      ?>


    edit:
    kleine randnotiz:
    NOW() ist ein sql-befehl kein php-befehl.


    Beitrag zuletzt geändert: 12.9.2010 22:39:38 von simuliertes
  12. ole-reglitzki

    Kostenloser Webspace von ole-reglitzki

    ole-reglitzki hat kostenlosen Webspace.

    die Werte von time() kannst du natürlich nicht in mysql in eine Spalte mit dem Format date, o.ä. eingeben, dazu solltest du eine neue Spalte mit dem Format int erstellen und diese hier abspeichern.
    Ansonsten wenn du nichts in der DB ändern willst, musst du das Datum aus dem YYYY-MM-DD hh:mm:ss mit mktime (http://php.net/manual/de/function.mktime.php) in einen Unix-Timestamp umwandeln (sekunden seit 1970) kannst dann 60 hinzuaddieren und mit der aktuellen Zeit (time()) vergleichen, wenn jetzt > db+60 dann Eintrag in DB ändern und Nummer eingeben.

    lg Ole

    Beitrag zuletzt geändert: 12.9.2010 23:16:15 von ole-reglitzki
  13. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    Vielen vielen Dank!
    Ich habe es nun mit time() und einem neuen Feld in der Datenbank hinbekommen.
    Super und schnelle Hilfe!
  14. hallo zusammen ich habe ein ähnliches probelm....

    ich erstelle grad eine börse...

    nur zeigt die sperre keine wirkung

    break;
    case'sellaktien':
     $xx=500700;
    $datum=$aktien_user['kaufdatum']+$xx;
    $sql ='SELECT * FROM aktien where id=\''.$_POST['id'].'\'';
    $index1 = mysql_query($sql) OR die(mysql_error());
    $aktien = mysql_fetch_assoc($index1);
    
    $sql ='SELECT * FROM aktien_user where id=\''.$_POST['kaufid'].'\'';
    $index1 = mysql_query($sql) OR die(mysql_error());
    $useraktien = mysql_fetch_assoc($index1);
    
    
    $preis=$aktien['kurs']*$_POST['anzahl'];
    $belegt=$aktien['belegt']-$_POST['anzahl'];
    $belegtuser=$useraktien['anzahl']-$_POST['anzahl'];
    
    
    if($_POST['anzahl']>$useraktien['anzahl'])
    	{$no=change('So viele Aktien hast du nicht.<br>');
    	header('Location: '.$site.'/boerse/?aktion=useraktien&n='.$no.'');
              exit;}
    if($_POST['anzahl']=='')
    	{$no=change('Du musst schon eine Zahl angeben.<br>');
    	header('Location: '.$site.'/boerse/?aktion=useraktien&no='.$no.'');
              exit;}
    
          if($datum>time())
    
    {$no='Na  du schon wieder warum willst du die Aktien nicht behalten?? Du wartest bitte noch 2-4 stunden.<br>';
    	header('Location: '.$site.'/boerse/?aktion=useraktien&no='.$no.'');
  15. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!