Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Nickpage für eine chat db
hallo erstmal,
bin zurzeit an einem projekt beteiligt das aus einem chat( mit db anbindung) besteht, nun arbeite ich gerade an der nickpage von dem chat.
nun gleich zu meinem problem.
wenn ich jetzt hier auf einen der aufgelisteten user klicke dann komm ich sofort zu der nickpage des users (die jeder sehen kann)
http://www.kropik.org/~markus/userliste.php
das problem bei der nickpage ist nun das ich die daten des user "xyz" nicht auslesen kann aus der db.
habe durch zusammenarbeit mit andren diesen code eingebaut in der nickpage
<?
$nick = $_POST["nick"];
$sqlbef = "SELECT * FROM `usertable` WHERE nick=$nick";
$sqlerg = mysql_query($sqlbef)or exit("fehlerhafter mysql befehl");
$anz = mysql_num_rows($sqlerg);
if($anz == 1){
$nick = mysql_result($sqlerg, $i, "nick");
$email = mysql_result($sqlerg, $i, "email");
$passwd = mysql_result($sqlerg, $i, "passwd");
?>
<p></p><p>
<strong>Hallo <? echo"$nick" ?> deine email lautet <? echo"$email" ?>!</strong></p>
<p><strong>dein Passwort lautet <? echo"$passwd" ?>.</strong></p>
<p></p>
<?
}else{
?>
<?php
}
mysql_close();
?>
was haben wir hier falsch gemacht?
mfg. lukas
danke schonmal
Coragon Rivito 20-06-2004, 13:15 $sqlbef = ".. WHERE nick = '$nick'";
a) eigentlich müsstest du nen fehler bekommen, oder hast du uns den nur vorenthalten ?
b) passwörter ausgeben solltest du nicht einfach so
ja wenn du dir die nickpage ansiehst kommt ein fehler
http://www.kropik.org/~markus/nickpage.php?nick=lukas
ähm das mit dem passwort ist mir schon klar, dies diehnt ja nur zum test.
ist dies falsch ?
$sqlbef = "SELECT * FROM `usertable` WHERE nick=$nick";
??
mysql_error() und mysql_errno() sind dein Freund ;)
Bei Fragen, schau ins Manual :)
Achja: Du solltest eigentlich keine Passwörter ausgeben können, da man alle Passwörter immer mit md5() verschlüsselt in der Datenbank speichert. Damit niemand der deine Datenbank hackt alle Passwörter hat :)
kannst du mir das bitte genauer erklären ?
bzw. wo könnte der fehler liegen ?
das passwort ist nicht md5 geschützt da es aus einer chat db ist.
Coragon Rivito 20-06-2004, 13:34 genial. uns so aufschlussreich:
=> fehlerhafter mysql befehl
kann niemand behaupten er hätte keine fehlerabfrage ;)
du sprichst in rätseln...
Original geschrieben von SirLuce
du sprichst in rätseln... du sollst mysql_error() benutzen, um im fehlerfalle eine aussagekräftige fehlermeldung zu erhalten.
habe das jetzt so in der db.php eingetragen
<?
$db="xx";
$server="xx";
$user="xx";
$pass="xx";
$conn_id=mysql_connect($server, $user ,$pass) OR DIE("Die Verbindung zum MySQL-Server ist fehlgeschlagen!!!");
@mysql_select_db($db) OR DIE("Die Datenbank ($db) kann zurzeit nicht erreicht werden! <br>Bitte wenden Sie sich an den Admin unter lukas@kropik.org</br>");
$result = mysql_query("SELECT * FROM usertable"); if($result) { echo mysql_num_rows($result); } else{ echo "Fehler-Nr. " . mysql_errno()." - " .mysql_error(); }
?>
!! usertable !! so heist die tabelle!
was dabei rausgekommen ist sieht man hier!
http://www.kropik.org/~markus/nickpage.php?nick=
und was sagt uns das jetzt ?!
lg. luki
und was sagt uns das jetzt ?!
das sage ich dir nicht, da du sonst beleidigt abziehst ...
nee, im ernst. die 4 scheint vom num_rows zukommen?
machs uns doch nicht so schwer.
poste doch fehlermeldungen und ergebnisse hier im forum. danke.
Okay, so würde ich es machen:
$query = mysql_query($sql) or die(mysql_errno().': '.mysql_error());
n paar grundlagen brauchts halt schon zum programmieren. wenn ich sehe, dass ich unverschlüsselte Passwörter benutzt, solltet ihr es vielleicht doch besser sein lassen. vorallem, wenn man angeblich "websolutions" vertreibt.
wie siehts jetzt mit dem sql-fehler aus? wurd ja oft genug nach gefragt!
und brecht den code mal bitte um, kann ja nicht sein, dass ich selbst mit ner widescreen-auflösung hier noch scrollen muss.
@TobiaZ das ist weder meine db noch meine comm. an der ich arbeite. diese chat db ist eine bestehende datenbank eines chats und daher auch nicht mit einem md5 pw geschützt ... aber ich denke das kann egal sein.
....
also der fehler:
1065: Leere Abfrage.
....
habe mit einem kollegen gesprochen der meinte ebenfalls das dieser datensatz nicht zu erreichen ist.
setzt lukas mal wie es sich gehört in anführungszeichen! logisch.
naja, deinem cheffe und dir mag das mit den passwörtern egal sein. ABER wenn ich ein user wäre, wäre mir das nicht egal. werde also mal ein auge offen halten nach seiten von "kropik "websolutions"". meine pws sollten schließlich geheim bleiben,
@TobiaZ irgentwie verstehst du nicht ganz meine worte!
das ist weder mein projekt noch meine comm, ich mache nur aus "spaß und lust" dortn die formulare, ob die eine md5 verschlüsselung haben oder nicht kann mir egal sein, darauf hingewiesen habe ich sie von anfang an. nur ist dies eben mit dem chatsystem kaum möglich. und geht mich auch weiter nichts an!
Danke an alle die mir helfen wollten!
habe das Problem selbst lösen können!
lg. lukas
mir solls auch egal sein. nur wenn ich irgendwo die finger drin hab, mach ich meine sachen vernünftig...
darauf hingewiesen habe ich sie von anfang an. was ich bezweifle, wenn ich die sql-anfragen so ansehe...
nur ist dies eben mit dem chatsystem kaum möglich. was ich genauso nicht glaube...
Aber wie gesagt. ist nicht meine sache... <EOT> Meinerseits
Poste doch bitte noch die Lösung für suchende User...
Coragon Rivito 20-06-2004, 16:02 @ tobiaz
die lösung steht gleich in meinem ersten post ..
er übergab den $nick in der query ohne anführungszeichen => wird falsch verwertet und kann nicht funktionieren
mir ist das klar:setzt lukas mal wie es sich gehört in anführungszeichen! logisch.
Fnds nur besser, wenn die Threaderöffner nachher auch die Lösung posten wenn sie das Problem selbst lösen konnten...
das problem lag ganz wo anderst
sowie hier die `nick`
SELECT * FROM `usertable` WHERE `nick` = '$nick'
@TobiaZ du kannst ganz schön nerfen mit deiner md5 verschlüsselung.
du kannst dich ja gerne bei denen melden und es besser machen!
bis auf unötiges lästern konntest du nichts nützliches rüberbringen ist mir aufgefallen!
danke an die mir geholfen haben!
ob das nick jetzt in backticks steht oder nicht, ist hierbei wohl eher zweitrangig... Der Fehler war der, der von CR in der ersten Antwort genannt wurde.
Rumlästern tu ich mit sicherheit nicht. Aber dass es sich hier um ein potentielles Sicherheitsloch handelt, sollte wohl klar sein.
|