• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

User in der DB sperren für eine gewisse zeit?

SimoNxD

Mitglied
Hi Ho Leute :)

PHP:
<?PHP  if($_SESSION['user_admin']>=$adminRights['ban_account']) {      echo '<h2>Admin - Account sperren</h2>';        if(isset($_GET['acc']) && !empty($_GET['acc']))     {            if(isset($_POST['submit']) && $_POST['submit']=='sperren') {                  if(!empty($_POST['banGrund']) && !empty($_POST['banEingabe'])) {                      $sqlCmd = "SELECT login FROM account.account WHERE id='".$_GET['acc']."' LIMIT 1";            $sqlQry = mysql_query($sqlCmd,$sqlServ);                        if(mysql_num_rows($sqlQry)>0)             {              $accData = mysql_fetch_object($sqlQry);              $sqlCmd = "UPDATE account.account SET status='BLOCK' WHERE id='".$_GET['acc']."' LIMIT 1";              if(mysql_query($sqlCmd,$sqlServ)) {                echo'<p>'.$accData->login.' wurde gesperrt</p>';                echo'<p><a href="index.php?s=admin&a=users&acc='.$_GET['acc'].'">zur&uuml;ck zur &Uuml;bersicht</a></p>';              }                            $begruendung = $_POST['banGrund'].': '.$_POST['banEingabe'];                            $sqlLog = "INSERT INTO ".SQL_HP_DB.".ban_log (admin_id,account_id,zeitpunkt,grund,typ) VALUES ('".$_SESSION['user_id']."','".$_GET['acc']."',NOW(),'".$begruendung."','BLOCK')";              $qryLog = mysql_query($sqlLog,$sqlHp);            }            else            {              echo'<p>Die eingegebene Account-ID existiert nicht!</p>';                  }                      }          else {            echo'<p class="meldung">Es wurde keine ausf&uuml;hrliche Begr&uuml;ndung eingegeben.</p>';          }
      }            $sqlLogin = "SELECT login FROM account.account WHERE id='".$_GET['acc']."' LIMIT 1";      $qryLogin = mysql_query($sqlLogin,$sqlServ);      $getLogin = mysql_fetch_object($qryLogin);            ?>      <form action="index.php?s=admin&a=ban&acc=<?PHP echo $_GET['acc']; ?>" method="POST">        <table>          <tr>            <th class="topLine">Account:</th>            <td class="tdunkel"><?PHP echo $getLogin->login ?></td>          </tr>          <tr>            <th class="topLine">Begr&uuml;ndung:</th>            <td class="thell">            <select name="banGrund">              <?PHP                              foreach($banGruende AS $gruende) {                  echo'<option value="'.$gruende.'">'.$gruende.'</option>';                }                              ?>            </select>            &nbsp;Erg&auml;nzung&nbsp;            <input type="text" name="banEingabe" size="50" maxlength="150" />            </td>          </tr>          <tr>            <th class="topLine" style="text-align:center;" colspan="2"><input type="submit" name="submit" value="sperren"/></th>          </tr>        </table>      </form>      <?PHP    }    else     {      echo'<p class="meldung">Es wurde keine Account-ID eingegeben.</p>';    }      }  else {    echo'<p class="meldung">Kein Zugriff auf diesen Bereich!</p>';  }?>

zuerst der script wie immer ;D
Nun die frage:
Zurzeit kann man mit dem Script bestimmte User in der DB von ''Status OK'' auf ''Status Block'' setzten.
Heißt der User wäre für immer geblockt, bis man ihn Manuell entblockt.
Aber wie krieg ich es hin, das ich dann angeben kann ''Setzte Status OK auf Status Block für zB 48 Stunden''?
Denke mal das ich in der DB erstmal ein neues feld anlegen muss bzw spalte mit ''block_time'' odeR?
Da ich nicht der profi in PHP bin, stelle ich trzdm mal in den raum das im Script dann auch stehen muss if block_time = True DANN update Status BLOCK auf Status OK?

Is das vom denk vorgang richtig :(?
 
Du müsstest die Zeit speichern in der er geblockt wurde, am besten als UNIX_TIMESTAMP ( PHP Funktion: time() ).

Bei jedem Aufruf einer Seite wo der Blockstatus abgefragt wird, muss noch eine Abfrage gemacht werden, ob die Aktuelle Zeit Abzüglich der gespeicherten Zeit größer ist als 48 Stunden.

Mit der "date" Funktion kann man z.B. sehr leicht, folgendes tuen:

date( "y-m-d" , time() ) // Jetzige Jahr-Monat-Tag Ausgabe

Statt time() für "jetzt" zu nehmen, kannst du zusätzlich den gespeicherten Wert nehmen und bekommst dann in dem Beispiel Jahr-Monat-Tag für das Datum angezeigt.

Wahrscheinlich gibts dafür bereits Tricks, aber ich würde einfach folgende Rechnung für 48 Stunden machen.

60/60/48 = 48 Stunden

60 Sekunden = 1 Minute
60 Minuten = 1 Stunde
24 Stunden = 1 Tag


Da du {JetzigeZeitInUnixTimestamp} MINUS {GespeicherteZeitInUnixTimestamp} in Sekunden zurück kriegst, kannst du den Wert durch 60/60/2 nehmen und hast den Unterschied. Oder gleich 2 Tage = 48 Stunden = 60*60*48 = 172800 Sekunden.

if( {JetzigeZeitInUnixTimestamp} MINUS {GespeicherteZeitInUnixTimestamp} > 172800 ) {
...
} else {
...
}
 
Zurück
Oben