Unbekannter Fehler in Freundesliste

Chaosengel_Gabriel

Erfahrenes Mitglied
Ich verzweifle... Aber wisst ihr sicher schon ^^

Es kommt nichts... Einfach nichts... Passiert nicht mal was...

Der Skript: <Datei entfernt> falls jemand noch schaun möchte, pls pn an mich...

Also nich dass wir uns falsch verstehen... Der Browser zeigt nichts...
In der Datenbank passiert nichts... GarNichts tut sich...


Ach ja und SRY wegen der Formatierung...
Daran ist notepad2 schuld...
Das zeigt keine Richtigen Tabs... ;)
 
Zuletzt bearbeitet:
Klingt banal, aber hast du per GET auch richtige Parameter übergegen (übergibt du überhaupt etwas)?
Du hast nämlich keinen else Zweig in deinem if Operator.

Sind in der Datenbank schon Informationen gespeichert? Wenn nicht dann füg mal Testdaten ein, dann müsste durch den unten angegebenen Teil etwas ausgegeben werden.

PHP:
$sql= "SELECT 
ID, 
Nickname, 
NickID 
FROM 
fl_".$_SESSION['UserID']." 
"; 
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); 
while($row = mysql_fetch_assoc($result)) 
{ 

echo '<table>'; 
echo '<tr><td>'.$row['Nickname'].'</td><td><a href="'.$_SERVER['PHP_SELF'].'?page=postfach&action=send&an='.$row['Nickname'].'">   PN schicken   </a></td></tr>'; 
echo '<tr><td></td><td><a href="'.$_SERVER['PHP_SELF'].'?page=user&id='.$row['ID'].'"> ZUM PROFIL </a></td></tr>'; 
echo '<tr><td></td><td></td></tr>'; 
echo '<tr><td></td><td><a href="'.$_SERVER['PHP_SELF'].'?page=friendlist&action=kill&id='.$row['ID'].'">   aus FL entfernen   </a></td></tr>'; 
echo '</table>'; 
}
 
Ja klar, die $_GET-Parameter sind gesetzt...
Nen bissl was mehr läuft es inzwischen, weil ich 2 geschweifte Klammern falsch gesetzt hatte...

Daten sind drin und die letzte Ausgabe mit der Tabelle klappt auch, aber die switch, case Operationen werden fehlerhaft ausgeführt...

Die allow staten werden irgendwie mehrfach und unterschiedlich aufgerufen -.-
 
Da is ein Denkfehler oder bzw. nen tippfehler drinne, hast ein Verneinungs-Operator vergessen :D

PHP:
if(isset($_GET['allow']) AND $_GET['allow'] == '') // Wie soll das script weitermachen wenn er erst überprüft das allow leer ist? 
                        {
                        switch($_GET['allow'])
                        {
                        case 'yes': $sql = "INSERT INTO
                                               fl_".$_GET['id']."
                                               (NickID,
                                               Nickname
                                               )
                                              VALUES
                                              ('".mysql_real_escape_string(trim($_SESSION['UserID']))."',
                                              '".mysql_real_escape_string(trim($row['Nickname']))."'
                                              )
                                              ";
 
Sry du musst die File kurz vorm upload der aktuellen erwischt haben...
DER Fehler ist mir auch aufgefallen...
Hab ich behoben und nun funt es soweit, dass es automatisch die PN absetzt, wenn man jemanden aufnehmen will...
Kommt auch Korrekt an und so, aber wenn ich die Links aus der PN benutzen will, dann verhaut sich der Skript ^^
 
Wird das so nicht funktionieren?

link.php?action=add&allow=yes
link.php?action=add&allow=no
link.php?action=add&allow=back
link.php?action=add&allow=kill
 
1. ?action=kill&id=$id
Die oberen 3 stimmen...
Nur jeweils mit der id noch mit drinne las $_GET-Parameter...

Aber das klappt nicht... Wenn ich nur action=add setze, dann wird ne PN geschrieben...
In dieser PN sind die Links:
link.php?action=add&allow=yes
link.php?action=add&allow=no
link.php?action=add&allow=back

Da wirft der Skript mir alles durch einnander und führt irgendwie immer alle aus ^^
 
Ich hab das ganze nochmal weiter überarbeitet...
Die logische Struktur der if und switch Operationen scheint nun zu klappen...

Aber irgendwie werden die IDs nicht so verwendet wie sie sollen...
Muss wohl irgendwo nen Denk-Fehler drinne sein... Wenn sich das mal pls einer anschauen könnte...
Hier der aktuelle Skript: http://gabriel86.ga.funpic.de/testClasses/friends.phps
Das is die Web-Site, zum testen des ganzen: http://gabriel86.ga.funpic.de/heavenly-hell.osna/

Mein Test-Account:
Nickname: Dante
PW: DevilsCry <Case-Sensitiv!

Nen gegen Acc zum testen könnt ihr euch wohl reggen^^
Die DB wird eh nochmal neu gestartet, wenn alles richtig fertig is ;)
 
Direkt als ich dein script das erste mal gesehen hatte, wusste ich direkt, dass da ein Denkfehler drinne ist. Einer der nicht gerade zu den netten menschen gehört, würde so vorgehen:

pn.php?id=XY&action=kill

Praktisch gesehen könnte er leicht ein script in perl oder php schreiben für das komplette datenbank durchgehen der id und einfach mit kill :D

Du musst also ein einhaltspunkt haben und das kannst du nur machen wenn du in die db schreibst wer die nachricht geschickt hat und wer es empfängt, und bei jedem abruf bei id (also schon im sqlkommando) muss du schon überprüfen ob die eingebene id in der db existiert und die empfängerid = eingeloggte id ist und falls es nicht der fall ist, dann solltest du eine fehlermeldung ausgeben ;) Und das script muss noch komplett überarbeitet werden weil dein script gegen fast alles angreifbar ist. Hier im PHP-Unterforum gibt es ja ein Sticky Beitrag von Dennis Wronka, schau dir alles an ;)
 
Zuletzt bearbeitet:
Ja, da mache ich es manchen zur Zeit noch sehr leicht...
Allerdings is das nicht nur bei dieser Site so, denn ich hab bislang das checken des login-status auf jeder einzelnen Seite weg gelassen...

Da mach ich mich aber eh noch ran, dass das behoben wird...
Die Fehler, die gezeigt werden, wenn der auto-logout packt nerven xD

Der Absender wird ja eingetragen und jeder Empfänger(User) hat ne eigene Tabelle für die pns ^^
Ausserdem läuft das Postfach ja auch ohne Probleme ;)

Die Freundesliste streikt...
In den pns, die ich da übergebe und die entsprechenden eintragungen in der db werden irgendwie mit den falschen IDs gemacht...

Zb: Ich als UserID1 mach nen FL-Antrag bei Dante(der hat glaub ich 16)...
Die PN kommt an... Die Links in der PN übergeben die ID von Dante...
Obwohl da eigentlich meine ID (1) drin sein müsste...

Wie im Skript zu sehen ist, setze ich die ID im Link beim absenden der PN mit $_SESSION['UserID'] , also die ID des User, der in dem Moment diese Aktion ausführt...

Wie kann es dann sein, dass in der PN, wenn ich sie mit Dante lese, die Links die falsche ID haben!?

[EDIT]:
Hab mir den Thread zur Sicherheit in PHP grade durchgelesen und in mich aufgesaugt ^^
Darauf gestossen zu werden trifft sich für mich grade jetzt sehr gut, da ich nurnoch an den letzten Feinheiten meiner Web-Site arbeite, sodass es überhaupt richtig funktioniert, bevor ich die Seite komplett auf OOP umstelle...
Ich werde also für MySQL-Abfragen in Zukunft eine eigene Klasse verwenden, die nach PHP5 standart sicher ist! Zumindest soweit es möglich ist ^^
Außerdem werd ich das Prüfen von Eingaben auch in Zukunft über eine extra Klasse handeln...

Ich mach mich nun nach dem lesen, des Threads über Sicherheit noch daran auch eine Klasse für ein entsprechendes Error-Handling u.ä. zu schreiben...
 
Zuletzt bearbeitet:
Zurück