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

Session Sperre

Status
Für weitere Antworten geschlossen.

dreamweaver_8

Neues Mitglied
Moin,

da sich in der Jobbörse niemand dafür interesiert, habe ich es selber versucht.

PHP:
<?php
$mysql_host = "localhost"; //Dein Host meistens "localhost"
$mysql_user = "***"; //Dein MYSQL-Benutzername
$mysql_pass = "***"; //Dein MYSQL-Passwort
$mysql_db = "***"; // Deine MYSQL-Datenbank
$db = mysql_connect($mysql_host, $mysql_user, $mysql_pass) OR die(mysql_error());
mysql_select_db($mysql_db ,$db); 
$sql = "SELECT name, datum FROM sm";
$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_assoc($result);
if($_SESSION['MM_Username'] == $row['name']){ /
echo "Sie können diese Seite nur einmal in 24 Stunden besuchen.\n <br>";
echo "Bitte versuchen sie es später noch einmal.";
} else { echo "Wilkommen auf dieser Seite.";
//Hier kommt der weitere Teil der Seite
$sql = "INSERT INTO name (name, datum) VALUES 
('".$_SESSION['MM_Username']."', NOW())";
mysql_query($sql) OR die(mysql_error());
} $sql = "DELETE FROM name WHERE DATE_SUB(NOW(), INTERVAL 1 DAY) > datum"; 
mysql_query($sql) OR die(mysql_error());
?>

aber irgendwie funktioniert es nicht.

Das ist noch die detailierte beschriebung was das Script machen soll:
Wenn man die Seite betretet soll eine abfrage von der MySQL datenbank klären ob jemand mit dieser Session schon mal auf diese Seite zugegriffen hat. Wenn ja soll die Seite nicht mehr angezeigt werden. Wenn nein soll die Seite angezeigt werden und einen Eintrag in die DB gemacht werden.

Was ist falsch an dem Script?
 
Momentan wird in diesem Script einfach nur der erste Username genommen, und es wird geprueft, ob dieser der gleiche ist, wie in der Session.

Besser waere sowas in der Richtung:

PHP:
$sql = "SELECT name, datum FROM sm WHERE name = '".$_SESSION['MM_username']."'";
$erg = mysql_query($sql)OR die(mysql_error());
if(mysql_num_rows($erg)){
echo "Bla, bla, du darfst hier nicht drauf.";
} else {
//hier der gesamte code, wenn man zugelassen ist
}
Bin mir nicht sicher, aber du musst glaube ich noch an dem query mit dem delete was aendern.

Ich bin jetzt erstmal weg, wnen ich zurueck bin kann ich mal ein wenig Googlen ;)
 
ist das nicht insgesammt sehr unsicher. Wenn man den Browser schließt und wieder öffnet ist die seesion weg ist es nicht sicherer die IP zu speichern.
 
na ja, also ich brauch' dazu genau drei klicks, schon hab' ich 'ne andere (router neu connecten).

Nils aka XraYSoLo
 
So, ich bins nochmal.

Haste den code, den ich gepostet habe ausprobiert? Wenns nicht klappt, dann schreiben if(mysql_num_rows != 0)

Und der DELETE-Befehl ist schinbar richtig.
 
Ich dachte da kommste selber drauf, aber naja :|


Da muss ja wieder dein eigener Code rein:

PHP:
$sql = "INSERT INTO name (name, datum) VALUES
('".$_SESSION['MM_Username']."', NOW())";
mysql_query($sql) OR die(mysql_error());
Da wo der comment momentan steht.


btw: Wieso beziehen sich der DELETE und der INSERT-Befehl auf die Tabelle "name", und der SELECT-Befehl auf die Spalte "sm" ? ;ugl
 
OK. Also ich fasse zusammen.

Der aktuelle Code:
PHP:
<?php
$mysql_host = "localhost"; //Dein Host meistens "localhost"
$mysql_user = "***"; //Dein MYSQL-Benutzername
$mysql_pass = "***"; //Dein MYSQL-Passwort
$mysql_db = "***"; // Deine MYSQL-Datenbank
$db = mysql_connect($mysql_host, $mysql_user, $mysql_pass) OR die(mysql_error());
$sql = "SELECT name, datum FROM sm WHERE name = '".$_SESSION['MM_username']."'"; 
$erg = mysql_query($sql)OR die(mysql_error()); 
if(mysql_num_rows($erg)){ 
echo "Bla, bla, du darfst hier nicht drauf."; 
} else { 
//hier der gesamte code, wenn man zugelassen ist 
} 
$sql = "INSERT INTO name (name, datum) VALUES 
('".$_SESSION['MM_Username']."', NOW())"; 
mysql_query($sql) OR die(mysql_error()); 
?>

Gibt aus: No database selected
 
Fehlermeldung?
Sonst gib uns mal bitte von einem free-server deine Userdaten.. Vielleicht muss man die db dort erst aktivieren o.ä.
Gruß, Fredmonster!
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben