Beiträge von Apathy
-
-
sollst DIESEN CODE:
$core->MUS('signout', "$userid");
ersetzen durch DIESEN:
$core->MUS('signout', $userid);
Falls es immer noch nicht geht, schick mir deine Tv Daten..
Das macht keinen Unterschied, man kann zwischen zwei " direkt die Variable schreiben.
Mach mal einen
nach
damit wir sehen, ob die Session überhaupt gelöscht wird.
-
Nimm einfach die standart Azure DB
-
Hast du auch die external_variables angepasst?
-
Du müsstest noch deinen Login umschreiben, dass es wenn die Logindaten richtig sind, ein Cookie erstellt mit dem Namem "test" und den md5() von dem Username.
Ich weis, ist nicht sehr sicher mit username, aber ist nur ein Test. In einem CMS würde das dann mit password_hash() und so gehen...Hier mal ein beispiel von dem Login
PHP
Alles anzeigen<?php // db connection $connection = new PDO('mysql:host=DBHOST;dbname=DBNAME', 'DBUSER', 'DBPASS'); if(isset($_POST['submit'])) { $username = filter_var(trim($_POST['username']), FILTER_SANITIZE_STRING); $password = filter_var(trim($_POST['password']), FILTER_SANITIZE_STRING); // alle felder ausgefüllt? if(empty($username) || empty($password)) { $err = 'Füll alle Felder aus.'; // wenn nicht -> error } else { // user passwort "fetchen" $query = $connection->prepare('SELECT password FROM users WHERE username = :username LIMIT 1'); $query->execute(['username' => $username]); // wurde der user gefunden? if($query->rowCount()) { $r = $query->fetchObject(); // wenn ja -> daten "entpacken" if(md5($password) !== $r->password) { // passwort richtig? $err = 'Ungültiges Passwort.'; // wenn falsch -> error } else { // wenn richtig -> session mit username erstellen // cookie mit verschlüsselten string erstellen $_SESSION['user'] = $username; setcookie('test', md5($username), time() + (86400 * 30)); header('Location: me'); // weiterleiten zur me page } } else { $err = 'User wurde nicht gefunden.'; // wenn nicht gefunden -> error } } } ?> <?php if($err) { echo $err; } ?> <form action="" method="post"> <input type="text" name="username" placeholder="Username"> <input type="password" name="password" placeholder="Passwort"> <input type="submit" name="submit" value="Login"> </form>
Dieser Code ist für das "Validieren" des Cookies. Wenn es nicht gleich ist, wie in der DB, wird der User ausgeloggt, die Session zerstört und das Cookie gelöscht.
PHP
Alles anzeigen<?php // db connection $connection = new PDO('mysql:host=DBHOST;dbname=DBNAME', 'DBUSER', 'DBPASS'); // gibt es das cookie "test"? if(isset($_COOKIE['test'])) { // holt das cookie von der db $query = $connection->prepare('SELECT cookie FROM users WHERE username = :username LIMIT 1'); $query->execute(['username' => $_SESSION['user']]); // wenn gefunden -> daten "entpacken" if($query->rowCount()) { $r = $query->fetchObject(); // gleiche value? wenn nicht -> cookie löschen // user ausloggen und zu index.php weiterleiten // um erneut einzuloggen if($_COOKIE['test'] !== $r->cookie) { setcookie('test', null, time() - 3600); session_destroy(); header('Location: index'); } } } else { // wenn nicht -> index.php weiterleiten und erneut einloggen. header('Location: index'); } ?>
Hoffe ich konnte dir helfen.Cheers,
Apathy. -
PHP
Alles anzeigen<?php mysql_connect('DBHOST', 'DBUSER', 'DBPASS'); mysql_select_db('DBNAME'); $ips = array(); $query = mysql_query('SELECT ip FROM visitors'); while($r = mysql_fetch_object($query)) { array_push($ips, $r->ip); } if(!in_array($_SERVER['REMOTE_ADDR'], $ips)) { mysql_query('INSERT INTO visitors (ip) VALUES (\'' . $_SERVER['REMOTE_ADDR'] . '\')'); } $query = mysql_query('SELECT ip FROM visitors'); $result = null; while($r = mysql_fetch_object($query)) { $result .= $r->ip . '<br>'; } ?> <h3>Vorhandene IPs</h3> <?php echo $result; ?>
-
Würde es auch gehen wenn die IP nur einmal abgespeichert wird.
Und nicht jedes mal wenn ich die Seite Aufrufe erneuert.Weil sonst ist die Tabelle mit der selben IP voll.
PHP
Alles anzeigen<?php mysql_connect('DBHOST', 'DBUSER', 'DBPASS'); mysql_select_db('DBNAME'); $query = mysql_query('SELECT ip FROM visitors'); if(mysql_num_rows($query) > 0) { while($r = mysql_fetch_object($query)) { if($r->ip !== $_SERVER['REMOTE_ADDR']) { mysql_query('INSERT INTO visitors (ip) VALUES (\'' . $_SERVER['REMOTE_ADDR'] . '\')'); } } } else { mysql_query('INSERT INTO visitors (ip) VALUES (\'' . $_SERVER['REMOTE_ADDR'] . '\')'); } ?>
-
Ich denke es ist noch nicht gecodet.
-
Ich weis nicht wo hier der Fehler liegt, also an meinem Script nicht den ich hab es selber getestet.
EDIT:
Ich denke mal du hast nicht PHP 5.6, darum hab ich es nochmal für PHP 5.3 gemacht. -
DB Tabelle
CodeCREATE TABLE `visitors` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `ip` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
CodePHP
Alles anzeigen<?php function getConnection() { try { return new PDO('mysql:host=DBHOST;dbname=DBNAME', 'DBUSER', 'DBPASS'); } catch(PDOException $e) { die($e->getMessage()); exit; } } $query = getConnection()->prepare('INSERT INTO visitors (ip) VALUES (:ip)'); $query->execute(['ip' => $_SERVER['REMOTE_ADDR']]); ?>
-
Das sollte jetzt funktionieren, hab es getestet.
PHP
Alles anzeigen<?php if(isset($_POST['submit'])) { $username = mysql_real_escape_string($_POST['username']); $password = md5($_POST['password']); $code = mysql_real_escape_string($_POST['code']); if(empty($username) || empty($password) || empty($code)) { $err = 'Füll bitte alle Felder aus.'; } else { $query = mysql_query('SELECT password, secretcode FROM users WHERE username = \'' . $username . '\' LIMIT 1'); if(mysql_num_rows($query) > 0) { $r = mysql_fetch_object($query); if($password !== $r->password) { $err = 'Ungültiges Passwort.'; } elseif($code !== $r->secretcode) { $err = 'Ungültiger Sicherheitscode.'; } else { $_SESSION['hksession'] = $username; header('Location: http://HOTELLINK/'); } } else { $err = 'User wurde nicht gefunden.'; } } } ?> <?php if($err) { echo $err; } ?> <form action="" method="post"> <input type="text" name="username" placeholder="Username"> <input type="password" name="password" placeholder="Passwort"> <input type="text" name="code" placeholder="Sicherheitscode"> <input type="submit" name="submit" value="Login"> </form>
-
Hab mal dein Script umgeschrieben, hab es aber nicht getestet.
PHP
Alles anzeigen<?php if(isset($_POST['submit'])) { $username = mysql_real_escape_string($_POST['username']); $password = mysql_real_escape_string($_POST['password']); $code = mysql_real_escape_string($_POST['code']); if(empty($username) || empty($password) || empty($code)) { $err = 'Füll bitte alle Felder aus.'; } else { $query = mysql_query('SELECT password, secretcode FROM users WHERE username = \'' . $username . '\' LIMIT 1'); if(mysql_num_rows($query) > 0) { $r = mysql_fetch_object($query); if($password !== $r->password) { $err = 'Ungültiges Passwort.'; } elseif($code !== $r->secretcode) { $err = 'Ungültiger Sicherheitscode.'; } else { $_SESSION['hksession'] = $username; header('Location: http://HOTELLINK/'); } } else { $err = 'User wurde nicht gefunden.'; } } } ?> <?php if($err) { echo $err; } ?> <form action="" method="post"> <input type="text" name="username" placeholder="Username"> <input type="password" name="password" placeholder="Passwort"> <input type="text" name="code" placeholder="Sicherheitscode"> <input type="submit" name="submit" value="Login"> </form>
-