Session Sperre

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
"; 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()); ?> [/php]

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
}[/php]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 :wink:

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.

auch die IP kann man wie seine shorts wechseln…

Nils aka XraYSoLo

ja aber es ist umständlicher.

na ja, also ich brauch’ dazu genau drei klicks, schon hab’ ich 'ne andere (router neu connecten).

Nils aka XraYSoLo

Die Session heisst Username. Mann muss sich zuerst einloggen damit mann diese seite sieht.

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.

Dein Code macht aber kein eintrarg in die DB.

Ich dachte da kommste selber drauf, aber naja :expressionless:

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());[/php]
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()); ?> [/PHP]

Gibt aus: No database selected

is’ ja verständlich, wenn du keine datenbank angegeben hast.

http://de.php.net/manual/de/function.mysql-select-db.php

Nils aka XraYSoLo

Kannste kein englisch. Es wurde keine Datenbank ausgewählt. Du hast mysql_select_db vergessen

Und wo in meinem Code muss ich das einbauen:?: und wie :?:

Jetzt kommt: Access denied for user 'sm’@‚localhost‘ to database ‚sm‘

Falsche Zugangsdaten

MFG
Alti

Hab es jetzt mit 3 Verschidenen DBs probiert. Es gehtr nicht.

Fehlermeldung?
Sonst gib uns mal bitte von einem free-server deine Userdaten… Vielleicht muss man die db dort erst aktivieren o.ä.
Gruß, Fredmonster!

die daten sind schon richtig. Mit anderen scripten funktioniert das Tip Top.