Profil Einstellung Es geht einfach nicht..:-(
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
code
datenbank
datum
fehler
feld
genutzte software
header
hilfe
http
login
musik
offset
output
profil
schaden
software
spiel
url
weiterleitung
zeile
-
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ü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=" Ändern " name="submit"/> </form> </div> </div> </body> </html>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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.
(Beispiel wurde aus Quakenet kopiert.)<?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... ?>
Hoffe das hilft dir weiter,
Grüße -
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$selectIsUserProfile = mysql_query("SELECT * FROM profile WHERE administraedFrom = {$_SESSION['username']} AND id = {$p}");
Dann wird der mysql-Fehler ausgegeben. Der dürfte für mehr klarheit sorgenor die(mysql_error())
-
php2f schrieb:
es gibt einen definitiven verdacht: im zweiten code, zeile 42. was ist dort bitte in $_GET['p']? und wieso $_GET?
... wo der Fehler ist ich ...
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage