kostenloser Webspace werbefrei: lima-city


Wer ist online.

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    schau-dich-shlau

    schau-dich-shlau hat kostenlosen Webspace.

    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 .:confused:


    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>";
    ?>

    :wave::wave:
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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&auml;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 :wave:
  4. Autor dieses Themas

    schau-dich-shlau

    schau-dich-shlau hat kostenlosen Webspace.

    Es geht immer noch nicht,:angel:


    Ist das jetzt so richtig.:confused:
    <?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&auml;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&uuml;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>
  5. schau-dich-shlau schrieb:
    ... Könnt ih mir helfe den Fehler finden ...
    offensichtlich nicht! wie lautet der verdammte fehlermeldung!!?? was siehst am bildschirm!!??
  6. 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&uuml;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>
  7. Autor dieses Themas

    schau-dich-shlau

    schau-dich-shlau hat kostenlosen Webspace.

    Es kommt keine Fehlermeldung ! Aber es geht nicht

    wenn ich mich einloggen Steht immer noch offline.:slant:


    http://s1.directupload.net/images/130802/lixgbj3n.png



    Hallo,limabone.
    Kannst du mein login om schreiben
    Bitte mach das für mich..:shy:
  8. schau-dich-shlau schrieb:
    Es kommt keine Fehlermeldung ! Aber es geht nicht

    wenn ich mich einloggen Steht immer noch offline.:slant:

    http://s1.directupload.net/images/130802/lixgbj3n.png

    Hallo,limabone.
    Kannst du mein login om schreiben
    Bitte mach das für mich..:shy:

    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!
  9. 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 :biggrin:

    Beitrag zuletzt geändert: 2.8.2013 23:03:21 von dustboy
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!