anpera.net https://anpera.dyndns.org/phpbb3/ |
|
Einladen und Ausladen ist unmöglich... aber warum bloß? https://anpera.dyndns.org/phpbb3/viewtopic.php?f=25&t=4797 |
Seite 1 von 1 |
Autor: | Marja [ Fr 13 Feb, 2009 21:02 ] |
Betreff des Beitrags: | Einladen und Ausladen ist unmöglich... aber warum bloß? |
Überschrift sagt eigentlich schon alles. Habe eine Redaktion für meine Zeitung gebastelt, wo ein Besprechungsraum für Interviews vorhanden ist. Von dort aus soll superuser 1 Spieler einladen oder ausladen können- welche nur bei einer einladung den Raum sehen. Raum sieht man- doch will superuser 1 jemanden einladen bzw. ausladen bekomme ich die Meldung: No input file specified. Die Url zum Script: http://inseln-campius.de/source.php?dir=1&file=222 |
Autor: | Auric [ Fr 13 Feb, 2009 22:00 ] |
Betreff des Beitrags: | Re: Einladen und Ausladen ist unmöglich... aber warum bloß? |
Also in dein Skript haben sich schon einige Fehler eingeschlichen, ich versuche, mal alle auf zu führen: $this->bbcode_second_pass_code('', '$sql="SELECT * FROM accounts WHERE name=".$_POST['search'];') Schon mal nicht gut: Zum einen wird hier nicht geproüft, ob $_POST['search'] überhaupt einen Wert hat, dann wird der String nicht maskiert (ist zwar in einem superuser-Bereich nicht soooo kritisch wie im normalen Spiel, aber trotzdem schlecht) Schließlich muss der gesuchte Name noch in einen String innerhalb des SQL-Strings geschachtelt werden: $this->bbcode_second_pass_code('', 'if(empty($_POST['search'])) { // Bla bla... nix eingegeben und so } else { $sql = sprintf("SELECT * FROM accounts WHERE name='%s'",mysql_real_escape_string($_POST['search'])); // ... ') Nächster Punkt: Du holst dir mit dem oben gebauten Query schon *alle* Felder aus der Accounts-Tabelle raus: Das ein zweites Mal zu tun (innerhalb der Schleife) ist ja nun mehr als doppelt gemoppelt. Im Gegenzug sollte man eher den oben beschrieben Query auf die benötigten Felder beschränken. Die Zeilen: $this->bbcode_second_pass_code('', ' $sql2="SELECT * FROM accounts WHERE acctid=".$row['acctid']; $result=db_query($sql2); $row2=db_fetch_assoc($result);') Können also gestrichen werden, aus $row2 zwei Zeilen weiterwird einfach zu einem $row. Dann kommt es richtig dicke: $this->bbcode_second_pass_code('', 'db_query($sql="INSERT INTO room(acctid) VALUE(".$_GET['acctid'].")");') Zunächst: Wenn du schon direkt einen String an die Funktion db_query übergibst, brauchst du es nicht erst in die variable zu stopfen. Des weiteren nennst du den Parameter, der die ID des Eingeladenen beinhalten soll oben "id", unten versuchst du ein $_GET['acctid'] ab zu Fragen: kann gar nicht funktionieren. Außerdem muss es VALUES und nicht VALUE heißen Also: $this->bbcode_second_pass_code('', 'db_query("INSERT INTO room(acctid) VALUES(".$_GET['id'].")");') Im Folgenden muss eben auch noch immer $_GET['acctid'] durch $_GET['id'] ersetzt werden. Beim Ausladen-Dialog kann man sich mit einem etwas besseren Querys wieder das doppel-gequery-gemoppel sparen: $this->bbcode_second_pass_code('', '$sql="SELECT a.acctid, a.name FROM room JOIN adressen a USING(acctid)";') Dile folgenden Zeilen fliegen damit wieder raus: $this->bbcode_second_pass_code('', '$sql2="SELECT * FROM accounts WHERE acctid=".$row['acctid']; $result=db_query($sql2); $row2=db_fetch_assoc($result);') ... und im folgenden muss aus $row2 wieder $row werden. Soviel erst mal zu konkreten Problemen - An allgemeinen Hinweisen bleibt wie immer das übliche: Statt der tausend einzelnen IFs lieber ELSEIFs oder gleich switch-case verwenden. Dazu noch: Mehr einrücken und ein bisschen mehr Übersicht durch Absätze und Co. schaffen - so kann man den Code echt nicht besonders gut lesen. Außerdem sollte die Struktur der Tabelle "room" noch mit in die Datei (als Kommentar) - übrigens ist der Name "room" wirklich ungünstig gewählt! Ich hoffe das hilft dir weiter. Falls die seltsame Fehlermeldung immer noch auftaucht, versuche mal heraus zu finden, in welcher Zeile bzw. bei welcher Anweisung der auftaucht (von hinten raus Code auskommentieren und probieren). Auric |
Autor: | Morpheus [ Mo 16 Feb, 2009 19:44 ] |
Betreff des Beitrags: | Re: Einladen und Ausladen ist unmöglich... aber warum bloß? |
Ich hoffe, Auric konnte Dir helfen denn Dein Source Link sagt nur... Zitat: Parse error: syntax error, unexpected '.' in /customers/inseln-campius.de/inseln-campius.de/httpd.www/common.php on line 732
|
Autor: | Marja [ Mo 16 Feb, 2009 21:31 ] |
Betreff des Beitrags: | Re: Einladen und Ausladen ist unmöglich... aber warum bloß? |
Hatte vorhin an meiner Nav etwas verändert, sorry. Hast wohl genau diesen Moment erwischt. Source müsste nun gehen. Hatte angefangen die lavie zu machen, es hat nicht so ganz geklappt, also habe ich es gelassen. Dann kamen ein paar Sachen dazwischen aber nun werd ich es noch einmal versuchen. Habe heute endlich wieder Zeit. €dit; Hat alles super geklappt. *Auric zuzwinker* ^^ |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |