Wer ist online.
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufarbeiten
bedingung
benutzer
besucher
code
einloggen
fehler
fehlermeldung
feld
host
http
log
login
minute
not
null
ordern
output
session
url
-
Hallo,
Ich haben wieder ein problem mein problem ist ich haben ein script was anzeigen welche User online sehen aber es geht nicht auf es zeigt nur an offline es zeigt nicht an onlie
Trotz einloggen
Könnt ih mir helfe den Fehler finden .
CREATE TABLE IF NOT EXISTS `login` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` longtext NOT NULL,
`passwort` longtext NOT NULL,
`Autologin` varchar(36) DEFAULT NULL,
`SessionID` varchar(36) DEFAULT NULL,
`Letzte_Aktion` varchar(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
);
<?php error_reporting(E_ALL); session_start(); echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n"; ?>
<?php error_reporting(E_ALL); include("mysql.php"); session_start(); echo "<table>"; echo " <tr>\n"; echo " <td>\n"; echo "Nickname\n"; echo " </td>\n"; echo " <td>\n"; echo " </td>\n"; echo " <td>\n"; echo "Letzter Login\n"; echo " </td>\n"; echo " <td>\n"; echo " \n"; echo " </td>\n"; echo " </tr>\n"; $sql = "SELECT id, SessionID, user, Letzte_Aktion FROM login ORDER BY user ASC "; $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); while ($row = mysql_fetch_assoc($result)) { // existiert eine Session ID und der User // war nicht länger als 2 Minuten inaktiv, so wird er als online betrachtet if($row['SessionID'] AND (time()-60*2 < $row['Letzte_Aktion'])) $online = "<span style=\"color:green\">online</span>\n"; else $online = "<span style=\"color:red\">offline</span>\n"; echo " <tr>\n"; echo " <td>\n"; echo "<a href=\"profil.php?id=".$row['id']."\">".$row['user']."</a>\n"; echo " </td>\n"; echo " <td>\n"; echo " </td>\n"; echo " <td>\n"; echo " </td>\n"; echo " <td>\n"; echo $online; echo " </td>\n"; echo " </tr>\n"; } echo "</table>"; ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
möchte dich darauf hinweisen, dass man zuerst prüft, ob man Datensätze erhält, bevor man diese ausgibt. Das macht man mit$x = 0; if($result->num_rows) { // gibt es Datensätze while($row = $result->fetch_assoc()) // dann gib mir einen nach dem anderen aus if($row['Letzte_Aktion'] >= time()-120 && !empty($row['SessionID'])) // zuerst der zu prüfende Wert, dann die Bedingung $x++; // HEUREKA! Wir haben einen Besucher mehr. echo 'Es sind zurzeit '.$x.' Besucher online.'; } else { echo 'Keine Einträge :-('; }
Falls das nicht funktionieren sollte, prüf bitte, ob Du die Aktivitäten des Nutzers auch korrekt in die DB einträgst.
Grüße
-
Es geht immer noch nicht,
Ist das jetzt so richtig.
<?php error_reporting(E_ALL); include("mysql.php"); session_start(); echo "<table>"; echo " <tr>\n"; echo " <td>\n"; echo "Nickname\n"; echo " </td>\n"; echo " <td>\n"; echo " </td>\n"; echo " <td>\n"; echo "Letzter Login\n"; echo " </td>\n"; echo " <td>\n"; echo " \n"; echo " </td>\n"; echo " </tr>\n"; $sql = "SELECT id, SessionID, user, Letzte_Aktion FROM login ORDER BY user ASC "; $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); while ($row = mysql_fetch_assoc($result)) { // existiert eine Session ID und der User // war nicht länger als 2 Minuten inaktiv, so wird er als online betrachtet $x = 0; if($result->num_rows) { // gibt es Datensätze while($row = $result->fetch_assoc()) // dann gib mir einen nach dem anderen aus if($row['Letzte_Aktion'] >= time()-120 && !empty($row['SessionID'])) // zuerst der zu prüfende Wert, dann die Bedingung $x++; // HEUREKA! Wir haben einen Besucher mehr. echo 'Es sind zurzeit '.$x.' Besucher online.'; } else { echo 'Keine Einträge :-('; } $online = "<span style=\"color:green\">online</span>\n"; else $online = "<span style=\"color:red\">offline</span>\n"; echo " <tr>\n"; echo " <td>\n"; echo "<a href=\"profil.php?id=".$row['id']."\">".$row['user']."</a>\n"; echo " </td>\n"; echo " <td>\n"; echo " </td>\n"; echo " <td>\n"; echo " </td>\n"; echo " <td>\n"; echo $online; echo " </td>\n"; echo " </tr>\n"; } echo "</table>"; ?>
Das ist meine login.
<?php //PHP Session starten session_start(); //Datenbankverbindung require_once('config.php'); //Loginprozess $user = $_POST['user']; $passwort = $_POST['passwort']; //Sind alle Felder ausgefüllt if($user != "" && $passwort != "") { //Absichern der Logineingaben, zum Schutz vor SQL-Injection $user = mysql_real_escape_string($user); //Verschluesseln des Passwortes, um die Datenbankabfrage durchzufuehren $passwort = md5($passwort); //Daten aus Datenbanak holen $selectUserData = mysql_query("SELECT * FROM login WHERE user = '{$user}'"); //Ist der Benutzer Ÿberhaupt vorhanden? if(mysql_num_rows($selectUserData) > 0){ //Aufarbeiten der Datenbankwerte $dbData = mysql_fetch_assoc($selectUserData); //Ist das eingengeben Passwort gleich dem Datenbankpasswort if($dbData['passwort'] == $passwort){ //Speichern der Logindaten im Log $userip = $_SERVER['REMOTE_ADDR']; $username = $dbData['id']; $insert = mysql_query("INSERT INTO loginlog VALUES ('','{$username}','{$userip}')"); $_SESSION['username'] = $username; //Weiterleitung // $userip = $_SERVER['REMOTE_ADDR']; $username = $dbData['user']; $insert = mysql_query("INSERT INTO user VALUES ('','{$username}','{$userip}')"); $_SESSION['username'] = $username; // $host = $_SERVER['HTTP_HOST']; $uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); header("Location: http://$host$uri/seite2.php"); exit; } else{ $output = "Falsches Passwort."; } } else{ $output = "Der Benutzer ist nicht vorhanden."; } } else{ $output = "Bitte füllen Sie alle Felder aus."; } ?> <html> <head> <link href="style.css" rel="Stylesheet" type="text/css" media="screen"></link> </head> <body> <div id="root"> <div id="logo"></div> <div id="sub-navi" style="text-align:right;"><form action="login.php" method="post"><b>Fehler: <?php echo $output; ?></b>E-Mail: <input type="text" name="user" style="width:100px;"></input> Passwort: <input type="password" name="passwort" style="width:100px;"></input> <input type="submit" value="Login" name="submit"></input></form></div> </div> <div id="login-img"> <img src="designImages/netorial_login.png" alt="LoginGrafik" border="0"/> </div> </body> </html>
-
schau-dich-shlau schrieb:
offensichtlich nicht! wie lautet der verdammte fehlermeldung!!?? was siehst am bildschirm!!??
... Könnt ih mir helfe den Fehler finden ... -
Was genau geht nicht? Kannst du uns bitte eine Fehlermeldung, eine Problembeschreibung, Screenshot oder dgl geben? Ohne diesen Informationen können wir dir nicht helfen.
Ich kann dir nur dein zusammenkopiertes login.php umschreiben, sodass es wieder Sinn ergibt:
<?php session_start(); // Kein DB-Aufbau, lediglich die Verbindungsdaten einbinden require_once('config.php'); // Kein Loginprozess, nur die Daten dafür $user = mysql_real_escape_string($_POST['user']); $passwort = md5(mysql_real_escape_string($_POST['passwort'])); if(preg_match('/^[A-Z][-a-zA-Z]+$/i', $user) && preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,12}$/', $passwort) { // Username muss aus Buchstaben bestehen; Passwort muss 1 Zahl enthalten und 8-12 Zeichen haben & kann !@$% enthalten //Daten aus Datenbanak holen $selectUserData = mysql_query('SELECT * FROM `login` WHERE `user` = "'.$user.'" AND `passwort` = "'.$passwort.'"'); // Das Passwort eines Users ist hoffentlich MD5() Verschlüsselt gespeichert. //Ist der Benutzer Ÿberhaupt vorhanden? if(mysql_num_rows($selectUserData) > 0){ //Aufarbeiten der Datenbankwerte $dbData = mysql_fetch_assoc($selectUserData); //Ist das eingengeben Passwort gleich dem Datenbankpasswort //Speichern der Logindaten im Log $userip = $_SERVER['REMOTE_ADDR']; $username = $dbData['id']; $insert = mysql_query('INSERT INTO loginlog(id, username, ip) VALUES (NULL,"'.$username.'","'.$ip.'")'); // wie auch immer deine Felder heißen $_SESSION['username'] = $username; //Weiterleitung //$insert = mysql_query("INSERT INTO user VALUES ('','{$username}','{$userip}')"); ????????????? Wieso den $insert überschreiben?? //$_SESSION['username'] = $username; ????????????? // $host = $_SERVER['HTTP_HOST']; $uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); header("Location: http://".$host.$uri."/seite2.php"); exit; }else{ $output = "Falsche Eingaben."; } }else{ $output = "Bitte füllen Sie alle Felder aus."; } ?> <html> <head> <link href="style.css" rel="Stylesheet" type="text/css" media="screen"></link> </head> <body> <div id="root"> <div id="logo"></div> <div id="sub-navi" style="text-align:right;"><form action="login.php" method="post"><b>Fehler: <?=$output;?></b>E-Mail: <input type="text" name="user" style="width:100px;"></input> Passwort: <input type="password" name="passwort" style="width:100px;"></input> <input type="submit" value="Login" name="submit"></input></form></div> </div> <div id="login-img"> <img src="designImages/netorial_login.png" alt="LoginGrafik" border="0"/> </div> </body> </html>
-
Es kommt keine Fehlermeldung ! Aber es geht nicht
wenn ich mich einloggen Steht immer noch offline.
http://s1.directupload.net/images/130802/lixgbj3n.png
Hallo,limabone.
Kannst du mein login om schreiben
Bitte mach das für mich.. -
schau-dich-shlau schrieb:
Es kommt keine Fehlermeldung ! Aber es geht nicht
wenn ich mich einloggen Steht immer noch offline.
http://s1.directupload.net/images/130802/lixgbj3n.png
Hallo,limabone.
Kannst du mein login om schreiben
Bitte mach das für mich..
dass du fehler und sonstige meldungen siehst, schreibst statt<?php error_reporting(E_ALL); session_start(); echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n"; ?>
einfach das richtige:<?php ini_set('display_errors', 1); error_reporting(E_ALL); session_start(); echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n"; ?>
(also "ini_set('display_errors', 1);" noch for error_reporting!)
und höre auf die leute anzubetteln, dir sachen fertig zu schreiben, wir helfen eh genug! lernen und tun musst du aber selber! -
Hallo,
das erste von dir gepostete Skript kann gar nicht ohne Fehlermeldung ausgeführt werden. Zu dem else in Zeile 45 gibt es nämlich überhaupt keine if-Bedingung.
while ($row = mysql_fetch_assoc($result)) { ... if($result->num_rows) { ... } else { ... } $online = "<span style=\"color:green\">online</span>\n"; else // Um dieses else geht es $online = "<span style=\"color:red\">offline</span>\n";
Ich denke das else sollte eigentlich zu dieser Bedingung gehören:
if($row['Letzte_Aktion'] >= time()-120 && !empty($row['SessionID']))
Zu grasierenden Theorien will ich nur noch erwähnt haben, dass dein Screenshot erstaunlich viele manuel-Accounts enthält
Beitrag zuletzt geändert: 2.8.2013 23:03:21 von dustboy -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage