Brauche hilfe bei XAMPP/PHP

  • Hallo Leute ich ahbe ein Problem das habe ich schon bei mehreren PHP Scripts gehabt und zwar wenn ich XAMPP an habe und auch Apache und MySQL(Mit Harken...), und in mein XAMPP ordner unter htdocs ein Ordner erstelle namens CP und den in mein Webbrowser geh und localhost/CP eingeben kommt das Hintergrund ... wird aufgerufen aber es steht
    Notice: Undefined index: sess_id in C:\xampp\htdocs\CP\index.php on line 41


    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\CP\index.php on line 43
    Um das CP nutzen zu können musst du dich mit deinen Logindaten einloggen.



    Benutzername:
    Passwort:


    Ich Frage mich woher das andere kommt? hoffe einer weis was ich meine und kann mir helfen danke im voraus!


    MFG
    Painic28

  • Es besteht ein simpler Fehler im Script. Der Coder setzt darauf, dass der Benutzer Cookies akzeptiert. Falls dies nicht der Fall ist wird es zu keinem Cookie kommen und somit wird der index sess_id in $_COOKIE[] nicht existieren und ebenfalls kein Ergebnis in mysql_query() zurückgeliefert, was den Fehler in mysql_num_rows() hervorruft. Ebenfalls ist es totaler Quatsch, ein Cookie versuchen zu verwenden ohne zuvor zu testen, ob das Cookie überhaupt existiert/gesetzt ist.

  • Ich glaub nicht das hier einer jetzt lust hat das zu downloaden nur weil du ein Problem damit hast ^^.
    Zeig uns am besten den Code daraus, der Probleme macht.

    Okay kann ich verstehen hier:


    <?php
    include'setup.php';


    if(!isset($_COOKIE['sess_id']) || strlen($_COOKIE['sess_id']) != SESS_LENGTH)
    {
    // Wenn keine Session existiert -> erstellen
    $pattern = 'qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM0123456789';

    $session = '';
    while(strlen($session) < SESS_LENGTH)
    {
    $session .= $pattern[rand(0, strlen($pattern) - 1)];
    }

    setcookie('sess_id', $session, time()+(60*60*24));
    }
    ?>
    <!DOCTYPE HTML>
    <html>
    <head>
    <title>Mein CP 0.1 Alpha</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
    <div id="wrapper">
    <div id="header">&nbsp;</div>

    <div id="navigation">
    <ul>
    <li><a href="index.php?page=index">Home</a></li>
    <li><a href="index.php?page=changepw">Passwort &auml;ndern</a></li>
    <li><a href="index.php?page=logout">Ausloggen</a></li>
    </ul>
    </div>

    <div id="content">
    <div id="content-top">&nbsp;</div>

    <div id="content-mid">
    <?php
    $sql = 'SELECT * FROM `sessions` WHERE `session` = "'. mysql_real_escape_string($_COOKIE['sess_id']) .'";';
    $query = mysql_query($sql);
    if(mysql_num_rows($query))
    {
    // Session existiert -> Benutzer eingeloggt
    // Nun nach "Sicherheitssachen" abfragen
    $session = mysql_fetch_assoc($query);

    if($session['ip'] == $_SERVER['REMOTE_ADDR'] && $session['useragent'] == $_SERVER['HTTP_USER_AGENT'] && $session['hostname'] == gethostbyaddr($_SERVER['REMOTE_ADDR']))
    {
    // Sicherheitsdetails stimmen -> Benutzer eingeloggt
    $player = new Player($session['username']);
    if(md5($player->getPassword()) == $session['password'])
    {
    $sql = 'SELECT COUNT(id) AS `count` FROM `failedlogins` WHERE `user` = "'. mysql_real_escape_string($player->getName()) .'";';
    $query = mysql_query($sql);
    $failedlogins = mysql_fetch_assoc($query);

    $page = (isset($_GET['page']) ? $_GET['page'] : 'index');
    $page = str_replace('/', '', $page);
    $page = str_replace('\\', '', $page);
    $path = 'pages/'. $page .'.php';
    if(file_exists($path))
    include $path;
    else
    include 'pages/index.php';
    }
    else
    {
    // Passwort geändert
    echo'<h2>Hinweis</h2>';
    echo'Dein Passwort unterscheidet sich von dem deiner Session.<br />
    Aus Sicherheitsgr&uuml;nden wirst du nun ausgeloggt.';
    $sql = 'DELETE FROM `sessions` WHERE `id` = '. $session['id'] .';';
    mysql_query($sql);
    }
    }
    else
    {
    // Sicherheitsdetails geändert -> Benutzer war offline ( -> IP geändert ), Browser gewechselt, Session-Hijacking (?)
    echo'<h2>Hinweis</h2>';
    echo'Wir konnten dich nicht als den Benutzer identifizieren, als den du dich eingeloggt hat. Vermutlich hat sich deine IP geändert, du bist von einem anderem PC eingeloggt oder &auml;hnliches.<br />
    Aus Sicherheitsgr&uuml;nden wirst du nun ausgeloggt.';
    $sql = 'DELETE FROM `sessions` WHERE `id` = '. $session['id'] .';';
    mysql_query($sql);
    }
    }
    else
    {
    // Session existiert nicht -> Benutzer nicht eingeloggt

    if(isset($_POST['submit']))
    {
    // Loginformular abgesendet
    $player = new Player($_POST['username']);
    if($player->exists() == false)
    {
    // Benutzername falsch
    echo'<b>Der eingegebene Benutzer wurde nicht gefunden</b><br /><i>Bitte pr&uuml;fe, ob du dich evtl. vertippt hast</i>';
    echo'<meta http-equiv="refresh" content="2; URL=index.php">';
    }
    else if($player->getPassword() == $_POST['password'])
    {
    // Benutzer existiert + Passwort richtig
    echo'<b>Du hast dich erfolgreich eingeloggt.</b><br /><i>Bitte warte, du wirst weitergeleitet.</i>';
    echo'<meta http-equiv="refresh" content="2; URL=index.php">';
    $sql = 'INSERT INTO `sessions` (`id`,`session`,`ip`,`useragent`,`hostname`,`username`,`password`) VALUES (null, "'. mysql_real_escape_string($_COOKIE['sess_id']) .'", "'. mysql_real_escape_string($_SERVER['REMOTE_ADDR']) .'", "'. mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']) .'", "'. mysql_real_escape_string(gethostbyaddr($_SERVER['REMOTE_ADDR'])) .'", "'. mysql_real_escape_string($_POST['username']) .'", "'. mysql_real_escape_string(md5($_POST['password'])) .'");';
    mysql_query($sql);
    }
    else
    {
    // Benutzer existiert, Passwort falsch
    echo'<b>Das Passwort stimmt nicht &uuml;berein</b><br /><i>Bitte pr&uuml;fe, ob du dich evtl. vertippt hast</i>';
    echo'<meta http-equiv="refresh" content="2; URL=index.php">';

    $sql = 'INSERT INTO `failedlogins` (`id`,`user`,`ip`,`hostname`,`useragent`,`password`) VALUES (null, "'. mysql_real_escape_string($_POST['username']) .'", "'. mysql_real_escape_string($_SERVER['REMOTE_ADDR']) .'", "'. mysql_real_escape_string(gethostbyaddr($_SERVER['REMOTE_ADDR'])) .'", "'. mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']) .'", "'. mysql_real_escape_string($_POST['password']) .'");';
    mysql_query($sql);
    }
    }
    else
    {
    // Loginformular nicht abgesendet
    echo'Um das CP nutzen zu k&ouml;nnen musst du dich mit deinen Logindaten einloggen.';
    echo'<form action="index.php" method="post">';
    echo'<label>Benutzername</label><label><input type="text" name="username" /></label><br />';
    echo'<label>Passwort</label><label><input type="password" name="password" /></label><br />';
    echo'<label>&nbsp;</label><label><input type="submit" name="submit" value="Login" /></label><br />';
    echo'</form>';
    }
    }
    ?>
    </div>

    <div id="content-bot">&nbsp;</div>
    </div>
    </div>
    </body>
    </html>


    Um das CP nutzen zu können musst du dich mit deinen Logindaten einloggen.


    Und da rüber kommt:
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\CP\index.php on line 43



    Hier Screen:




    Hoffe du weist was ich meine danke weiterhin!

  • Dann schau dir den Beitrag von ihm an:

    Es besteht ein simpler Fehler im Script. Der Coder setzt darauf, dass der Benutzer Cookies akzeptiert. Falls dies nicht der Fall ist wird es zu keinem Cookie kommen und somit wird der index sess_id in $_COOKIE[] nicht existieren und ebenfalls kein Ergebnis in mysql_query() zurückgeliefert, was den Fehler in mysql_num_rows() hervorruft. Ebenfalls ist es totaler Quatsch, ein Cookie versuchen zu verwenden ohne zuvor zu testen, ob das Cookie überhaupt existiert/gesetzt ist.