kostenloser Webspace werbefrei: lima-city


Profil Einstellung Es geht einfach nicht..:-(

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    php2f

    php2f hat kostenlosen Webspace.

    Hallo,
    Ich brauche hilfe .:-)

    Können sie mir sagen wo der Fehler ist ich verzweifel einfach..




    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in E:\xampp\htdocs\spiele\login\edit-profile.php on line 46

    Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in E:\xampp\htdocs\spiele\login\edit-profile.php on line 56

    Notice: Undefined offset: 1 in E:\xampp\htdocs\spiele\login\edit-profile.php on line 62

    Notice: Undefined offset: 2 in E:\xampp\htdocs\spiele\login\edit-profile.php on line 63

    Notice: Undefined offset: 3 in E:\xampp\htdocs\spiele\login\edit-profile.php on line 64

    Notice: Undefined offset: 4 in E:\xampp\htdocs\spiele\login\edit-profile.php on line 65


    <?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.";
    }
    ?>
    	<div id='loginform'>
    	<form method="post" action="login/login.php">
    		<p>Benutzername: <input type="text" name="user" onFocus="this.value = ''" value="Uername"  /><br /></p>
    		<p>Passwort: <input type="password" name="passwort" onFocus="this.value = ''" value="Uername" /><br /></p>
    		<p>
    		  <label for="sicherheitsabfrage">sicherheitsabfrage</label>
    		  <select name="sicherheitsabfrage" id="sicherheitsabfrage">
    		    <option>?</option>
    		    <option>1</option>
    		    <option>2</option>
    		    <option>3</option>
    		    <option>4</option>
    		    <option>5</option>
    		    <option>6</option>
    		    <option>7</option>
    		    <option>8</option>
    		    <option>9</option>
    		    <option>10</option>
    		    <option>11</option>
    	      </select>
    		</p>
    		<input type="submit" value="Einloggen" />
    	</form>
    	</div>





    <?php
    //Start PHP-Session
    session_start();
    //Bindet die Datnbankverbindung ein
    require_once('config.php');
    //Guckt, ob der Nutzer eingeloggt ist, wenn nein, wird er zur Startseite weitergeleitet.
    if(!isset($_SESSION['username']))
    {
                //Weiterleitung
                $seite2= $_SERVER['HTTP_HOST'];
                $uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
                header("Location: http://$seite2$uri/index.php");
                exit;
    }
    //Verarbeitung des Submitbuttons
    if(isset($_POST['submit']))
    {
    	//Bereite die variable auf, um keinen Schaden in der Datenbank anzurichten
    	$p = mysql_real_escape_string($_POST['id']);
    	//Holt sich Werte des Aktuellen Nutzers
    	$selectIsUserProfile = mysql_query("SELECT * FROM profile WHERE administraedFrom = {$_SESSION['username']} AND id = {$p}");
    	//Guckt, ob es der Richtige Nutzer ist, der Daten abfragt
    	//Wenn ja, darf er die Werte bearbeiten
    	if(mysql_num_rows($selectIsUserProfile) > 0)
    	{
    		//Bereite die variable auf, um keinen Schaden in der Datenbank anzurichten
    		$profilname = mysql_real_escape_string($_POST['profiname']);
    		$pI = "Musik:<br>" .$_POST['musik'] ." -_-_-_:-_:->|-#*## <br> Genutzte Software: <br>" .$_POST['software'] ." -_-_-_:-_:->|-#*## <br> Gibt Tutorials in: <br>" .$_POST['tutorials'] ." -_-_-_:-_:->|-#*## <br>Braucht Hilfe in: <br>" .$_POST['hilfe'] ." -_-_-_:-_:->|-#*## <br> Sonstiges: <br>" .$_POST['sonstiges'];
    		$profilInfo = mysql_real_escape_string($pI);
    		//Werte bearbeiten
    		$update = mysql_query("UPDATE profile SET  profileName =  '{$profilname}', profilInfos =  '{$profilInfo}' WHERE  id ={$p}");
    	}
    	//Nach der Bearbeitung, Seite reseten
    	//Weiterleitung
                $v = $_SERVER['HTTP_HOST'];
                $uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
                header("Location: http://$seite2$uri/profile.php?p={$p}");
                exit;
    	
    }
    //Werte aus Datenbank auslesen, um die Werte in die Formularfelder einzusetzten
    $p = mysql_real_escape_string($_GET['p']);
    $selectIsUserProfile = mysql_query("SELECT * FROM profile WHERE administraedFrom = {$_SESSION['username']} AND id = {$p}");
    //Ist dass das Profil, auf welches zugegriffen werden soll
    //Wenn ja, werte Auslesen
    if(mysql_num_rows($selectIsUserProfile) > 0)
    {
    	$getUserMainProfil = mysql_query("SELECT * FROM profile WHERE administraedFrom = {$_SESSION['username']} AND id = {$p}");
    }
    //Wenn nein, Nutzerprofil des angemeldeten Nutzters raussuchen
    else
    {
    	$getUserMainProfil = mysql_query("SELECT * FROM profile WHERE administraedFrom = {$_SESSION['username']} AND type = 1}");
    }
    //Daten aus datenbank Auslesen
    $data = mysql_fetch_assoc($getUserMainProfil);
    //Werte, die in die Felder kommen
    //Trennzeichen des Profiles: 	-_-_-_:-_:->|-#*##
    $trenndata = str_replace("<br>", "" ,$data['profilInfos']);
    $userProfileInfos = explode("-_-_-_:-_:->|-#*##", $trenndata);
    $music = str_replace("Musik:", "", $userProfileInfos[0]);
    $software = str_replace("Genutzte Software:", "", $userProfileInfos[1]);
    $tutorials = str_replace("Gibt Tutorials in:", "", $userProfileInfos[2]);
    $hilfe = str_replace("Braucht Hilfe in:", "", $userProfileInfos[3]);
    $sonstiges = str_replace("Sonstiges:", "", $userProfileInfos[4]);
    ?>
    <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"></div>
            <div id="content" style="background-image:none;">
                <div id="main-content" style="width:990px;">
                <h2>Profil bearbeiten</h2>
                <form action="edit-profile.php" method="post">
                Profilname:<br>
                <input type="text" name="profiname" style="width:100%" value="<?php echo  $data['profileName']; ?>"/><br>
                Musik:<br>
                <textarea name="musik" style="width:100%"><?php echo $music; ?></textarea>
                Genutzte Software:<br>
                <textarea name="software" style="width:100%"><?php echo $software; ?></textarea>
                Gibt Tutorials in:<br>
                <textarea name="tutorials" style="width:100%"><?php echo $tutorials; ?></textarea>
                Braucht Hilfe in:<br>
                <textarea name="hilfe" style="width:100%"><?php echo $hilfe; ?></textarea>
                Sonstiges:<br>
                <textarea name="sonstiges" style="width:100%"><?php echo $sonstiges; ?></textarea><br>
                <input type="hidden" name="id" value="<?php echo $data['id']; ?>">
                <input type="submit" value="   &Auml;ndern   " name="submit"/>
                </form>
            </div>
        </div>
    </body>    
    </html>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Habe Explizit keinen genauen Fehler gefunden, liegt vermutlich auch daran, dass ich nichtmehr mit obsolenten Methoden auf die Datenbank zugreife. Stichwort MySQLi.
    Schreibe deinen Code bitte um, ist viel sicherer mit MySQLi.
    <?php
    $db = @new mysqli('localhost', 'username', 'password', 'database');
    if (mysqli_connect_errno()) {
        die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
    }
    $sql = 'Query hier einfügen';
    $result = $db->query($sql);
    if (!$result)
        die ('Etwas stimmte mit dem Query nicht: '.$db->error);
    
    echo 'Die Ergebnistabelle besitzt '.$result->num_rows." Datensätze<br />\n";
    while ($row = $result->fetch_assoc()) {
        // $row ist nun das Array mit den Werten
        echo 'Die News "'.$row['Titel'].'" wurde am "'.$row['Datum']."\" geschrieben<br />\n";
    }
    $result->close();
    unset($result); // und referenz zum objekt löschen, brauchen wir ja nicht mehr...
    ?>
    (Beispiel wurde aus Quakenet kopiert.)

    Hoffe das hilft dir weiter,

    Grüße :wave:
  4. $selectIsUserProfile = mysql_query("SELECT * FROM profile WHERE administraedFrom = {$_SESSION['username']} AND id = {$p}");
    Der Fehler tritt höchst wahrscheinlich in dieser Zeile auf - evtl. weil administraedFrom falsch geschrieben ist. (Sollte es nicht eher administratedFrom heißen?). Ansonsten mach mal ans Ende dieser Zeile (vor dem ; ) ein
    or die(mysql_error())
    Dann wird der mysql-Fehler ausgegeben. Der dürfte für mehr klarheit sorgen ;-)
  5. php2f schrieb:
    ... wo der Fehler ist ich ...
    es gibt einen definitiven verdacht: im zweiten code, zeile 42. was ist dort bitte in $_GET['p']? und wieso $_GET?
    also ersetze im zweiten code zeile 43(!) damit
    $q = <<< EOT
    SELECT *
      FROM profile
      WHERE administraedFrom={$_SESSION['username']} AND
            id=$p
    EOT;
    $selectIsUserProfile = mysql_query($q);
    $n = mysql_errno();
    $e = mysql_error();
    echo <<< EOT
    <h4>mysql_errno: $n</h4>
    <h4>mysql_error: $e</h4>
    EOT;
    und dann sehen wir uns die meldungen an.

    außerdem ist der ratschlag von limabone unbedingt zu beherzigen.

    Beitrag zuletzt geändert: 27.7.2013 11:37:07 von czibere
  6. 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!