Das Problem scheint zu sein, dass $strReturnhtml leer ist, das Headerzeugs ist erstmal egal. Tu mal folgendes oben ins Script:
error_reporting(E_ALL);
ini_set("display_errors",1);
So sollte es dann aussehen
Beiträge von Afrael
-
-
PHP ungleich SSI (diese funktionieren, wenn überhaupt, nur in Dokumenten mit der Erweiterung .shtml). Je nachdem, welche Anforderungen du hast, solltest du nach "PHP include menü" googlen und von da weitergucken.
-
Du musst die Datei mit der Endung .php, nicht .htm speichern. Wenn es dann immer noch nicht klappt, ist PHP auf deinem Server nicht aktiviert und du musst zum Testen einen anderen Webspace verwenden oder xampp lokal installieren.
-
Was genau verstehst du denn unter "will so nicht funktionieren"? Du gibst einen Namen ein, klickst auf OK und dann müsste das gehen.
-
Wo genau soll denn $user herkommen? Du arbeitest doch nicht etwa mit register_globals?
-
Ich verstehe den Sinn der ganzen Konstruktion nicht wirklich, aber okay. Auf dein erstes Beispiel bezogen
Du machst ein
UPDATE tabelle SET order_id=order_id+1 WHERE order_id >= 2
Das verschiebt alle Datensätze von 2 bis zum Ende der Tabelle quasi um eins nach hinten. Dann setzt du Datensatz 4 mit der order_id 2 ein.
Hoffe, ich habe die Frage richtig verstanden. -
Das mag minimal sein aber es ist unnötig. Mit einfachen Anführungszeichen und . ist die Struktur klarer und es ist schneller ohne irgendwelche Nachteile.
Sorry, aber ich finde
übersichtlicher als -
Hast du deinen Freunden ebenfalls eine Anfrage geschickt? Wenn nein, tu das mal.
-
dass stimm auch wieder. Warum kann man eigentlich js ausschalten und php nicht. JS kann keine Benutzerdaten lesen und ein cookie keinen ausführbahren code enthalten. wozu muss man den Webmastern dann das leben schwer machen?
*klugdung* Nun, wenn der Webmaster dumm genug ist, die Cookies ungefiltert als Code zu übernehmen (warum auch immer man so etwas hirnrissiges machen sollte), kann man als Angreifer über die eigenen Cookies durchaus Code ausführen.
Beispiel: -
Hab dir eine PM geschrieben.
-
Was die E_NOTICE angeht, finde ich ein bisschen komisch, denn ich bekomme keinerlei Notices oder irgendwelche Art von Fehlermeldungen angezeigt.
Jap, ist richtig, weil du sauber codest
Würdest du einfach $username=$_GET['username']; schreiben, hättest du eine E_NOTICE, wenn $_GET['username'] nicht initialisiert ist;ZitatWas die isset() und empty() angeht, habt ihr beide natürlich recht. Ich habe versucht den Code ein wenig sinnvoller zu gestalten. So sieht er nun aus:
PHP$username = (isset($_GET['username']) and !empty($_GET['username'])) ? $_GET['username'] : 'false'; $password = (isset($_GET['password']) and !empty($_GET['password'])) ? $_GET['password'] : 'false'; if ($username and $password != 'false') {Ist diese Methode nun besser oder habt ihr einen besseren Vorschlag?
Ich fand das, was du da hattest, schon richtig so, bis auf die Sache mit dem empty, die ist wie gesagt überflüssig.PHP$username = isset($_GET['username']) ? $_GET['username'] : ''; $password = isset($_GET['password']) ? $_GET['password'] : '';
So würd ichs machen. -
Ungetestet:
PHP
Alles anzeigen<?php $var = file('http://blogurl.de/artikel/123'); function between($von,$bis,$string) { $a = explode($von,$string); $b = explode($bis,$a[1]); return $b[0]; } for($lauf = 0; $lauf < count($var); $lauf++) { $link = between('href="','"',$var[$lauf]); echo $link ."<br>"; } ?>Andere Frage, warum guckst du nicht über die Datenbank, wo da Links gesetzt sind?
-
-Die Überprüfung mit isset, empy etc. ist absolut unnötig und somit zeitraubend.
Ich glaub, da werden wir beide uns nie einig
Fakt ist, dass in diesem Fall die Prüfung auf !empty tatsächlich überflüssig ist. Du setzt $username ja im Zweifelsfalle sowieso auf leer, da ist es egal, ob vielleicht schon leer ist.
Fakt ist außerdem, dass man eine E_NOTICE kriegt, wenn man isset nicht verwendet. Und ich mag meine Variablen lieber initialisiert.Zitat
-Die Ansage: "Connection Failed" ist Unsinn, vielmehr ist das Passwort falsch.
Äh... die mysql_query scheitert ja schon, nicht die Ergebnisse. Das mit Connection Failed dürfte dann stimmen.
@Threadersteller
Das muss <br /> statt <br \> heißen
Ach, und zur Verbesserung der Performance solltest du inPHPSELECT `username`, `password` FROM `test` WHERE `username` ='$username' and `password` ='$password'
ein LIMIT 1 hinzufügen, du hast ja nur einen Benutzer mit diesem Benutzernamen.
Ansonsten seh ich auch keine Möglichkeit einer Injection. -
Hinweis auf SQL-Injection über ORDER BY hinzugefügt.
-
Weil ich nicht weiß, wie ausführlich ich das hier beschreiben darf. Das meiste, was ich meinte, kann nur passieren, wenn man Zahlen per GET empfängt, nicht sicherstellt, dass es Zahlen sind, und sie ohne Anführungsstriche in die Query einbaut.
SELECT * FROM table WHERE id=$_GET['id'] zum Beispiel. Und das würde dann irgendwann auf ein SQL-Injection Tutorial hinauslaufen.
Hätte gerne die Meinung eines Mods, bevor ich mich auf sowas einlasse
-
Jein. Ich bin mir ziemlich sicher, dass es spätestens dann illegal wird, wenn echtes Geld beteiligt ist (ein Spiel mit Premiumaccounts z.B.). Wenn die Leute sich zum Beispiel ingame Punkte mit einem Autorefresher holen können, werden sie sich keine Premiumaccounts kaufen, dadurch verliert die Firma ebenso Geld wie Musikfirmen beim Raubkopieren. Kann das jemand bestätigen?
-
Hab mit Firebug debuggt und danach das HTML validiert (man merkt, ich hab nix zu tun
)Code
Alles anzeigen<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <head> <meta name="generator" content="HTML Tidy for Linux (vers 6 November 2007), see www.w3.org"> <title>Polybios-Code</title> <script language="javascript" type="text/javascript"> var wort; var wortcode; var C; function eindimensionales_array() { schluessel=new Array ("13", "23", "24", "25", "31", "11", "32", "15", "33", "34", "35", "41", "21", "42", "43", "44", "12", "22", "45", "14", "51", "52", "53", "54", "55"); wort=document.Polybios_Code.text.value; wort=wort.toUpperCase(); console.log(wort); C=""; for(zaehler=0; zaehler<wort.length; zaehler++) { wortcode=wort.charCodeAt(zaehler); wortcode=wortcode-64; wortcode=schluessel[wortcode]; C=C.concat(String.fromCharCode(wortcode) ); console.log(C); } alert ("C"); return false; } </script> <style type="text/css"> body { background-color: Lightseagreen; } </style> </head> <body> <form name="Polybios_Code" action="" method="post"> <h1>Verschlüsselung nach Polybios</h1> <input type="text" name="text"> <input type="button" value="Verschlüsseln" name="verschluesseln" onclick="eindimensionales_array();"></form> </body> </html>
Dein Hauptfehler war, dass du ein Minus im Attribut verwendet hast und dass du die Klammern bei toUpperCase vergessen hattest. Und höchstwahrscheinlich ist die Lösung von synaptic besser, hab sie mir nicht ausführlich angeguckt. -
Habs im Anhang nochmal hochgeladen. Weiß allerdings nicht, welche PHP-Version bei dir läuft, evtl hast du schon PHP 5 und brauchst die andere.
Erstelle mal eine Datei obscure_info.php, gib da folgendes ein
<?php phpinfo(); ?>
lad sie auf deinem Webspace hoch und guck sie dir im Browser an. Da steht dann deine PHP-Version. -
1. @ vor einer Funktion zu schreiben unterdrückt Fehlermeldungen, die von der Funktion selber ausgeworfen werden.
2. Das ist richtig. Diese Zeichen können benutzt werden, um eine SQL-Injektion durchzuführen.
[Einschub: Würde die Query einfach 'SELECT `username`, `email` FROM `table` WHERE `id` = $id' ohne einfache Anführungsstriche um $id lauten, kämen wir als Angreifer sogar ohne diese Zeichen aus.]Da wir die $_GET['id'] bereits nach Integer, also in eine Ganzzahl, konvertiert haben, ist mysql_real_escape_string an dieser Stelle sogar überflüssig. Allerdings sollte es für $username bzw $email verwendet werden.
-
Ein Onclick an das Bild pappen, das beim Anklicken die Form per Javascript zurücksetzt. Außerdem <noscript>-Tags verwenden, um eine Alternative für die Leute einzubauen, die JS aus haben.