Beiträge von SinnlosS

    Also erstmal danke.^^

    Dann eine Verständnissfrage:

    mysql_real_escape_string bedeutet also, dass es der Variablen immer einen Wert zuweist und der dadurch nicht auf 0 stehen kann?

    zu Punkt 2.:
    Edit* schon gut. xD

    Regards Sucki


    mysql_real_escape_string maskiert bestimmte Zeichen in deinem String um SQL-Injection zu verhindern.
    Mal ein Beispiel für SQL-Injection:

    Zitat


    Die Abfrage, die an MySQL übermittelt wird:

    SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''


    http://de.php.net/mysql_real_escape_string

    Selbst bei 5 selectboxen kann das wegfallen.
    Über eine ausreichende beschriftung und eine php-ausleseung kann man das schon machen.


    Man sollte mittels php eine noscript-Weiche stellen. Trotzdem ist es sehr gut das generell über JavaScript (noch besser Ajax) zu realisieren, da es besonders bei hochfrequentierten komplexeren Seiten sehr performancelastig sein kann für jede Auswahl die ganze Seite neu zu laden. Bei 5 Auswahlen würde mich als User das schon ganz schön ankotzen wenn die Seite nicht extrem schnell läd.

    Ich hab das mal auf die relevanten Teile gekürzt und die ein oder andere Anmerkung zu Änderungen reinkommentiert, so hier sollte es eigentlich laufen:

    Wurde dir die englische oder die deutsche Fehlermeldung zum PW ausgespuckt? Bei der deutschen ist völlig klar das die kommt, da du in der zweiten Abfrage auf user nach $username sucht, die Variable wird vorher aber gar nicht belegt, also kann auch kein Datensatz gefunden werden. (Wozu eigentlich die zweite Abfrage auf user?)

    Anmerkung:
    Warum soll ich nicht SELECT * schreiben?
    http://www.php-faq.de/q-sql-select.html

    Das ist mir in der Form zu unleserlich. Rück den Quellcode mal ein und gibt ihn formattiert aus -> [ php ] [ /php ]
    Dann schau ich es mir vllt. bei Gelegenheit an. :)

    Hier mal ein kleines Login-Skript, vllt. hilft dir das auch als Anregung schon weiter:

    Eine Javascript-Funktion schreiben, die bei onchange und onkeyup (und evtl noch bei ein paar anderen) ausgelöst wird und mit regulären Ausdrücken arbeitet. Regulären Ausdruck für Datetime müsste es im Internet geben.


    Da er vermutlich mit dem neuen Wert in irgendeiner Form weiterarbeiten will sollte eine Überprüfung mit JavaScript nur eine Ergänzung zu einer PHP-Überprüfung bei der Verarbeitung des Formulars sein. Ansonsten braucht ein User nur JavaScript deaktiviert haben und schon können falsche Daten durchkommen.

    Ergänzend zu dem guten Beitrag von The_User noch ein pragmatischerer Punkt:

    Übersichtlichkeit und schnellere/leichtere Erweiterbarkeit deines Codes

    Lass dir das von jemand gesagt sein der ein halbwegs komplexes Social Network prozedural runtergeschrieben hat. :D
    Beim erstmaligen coden ist das noch kein größeres Problem. Aber wenn es dann später zu Anpassungen und Erweiterungen kommt macht das wirklich keinen Spaß.

    Ein weiterer eher pragmatischer Grund ist der eigene Namensraum für Variablen (bzw. Eigenschaften) innerhalb von Klassen.


    Hilft mir nur auch nicht, da ich nun nur noch sehe:

    Code
    [FONT=Tahoma][COLOR=#4b4b4b]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%hallo% AND Gekauft = '1'' at line 1[/COLOR][/FONT]


    Sag mal... natürlich hilft dir das, wenn du auch mal versuchst die Fehlermeldung zu verstehen statt sie nur hier reinzukopieren.
    Zaunpfahl: Grundkenntnisse Mysql.
    Um Strings gehören Hochkommata:
    LIKE '%hallo%'
    und nicht wie du es hast LIKE %hallo%

    Du setzt in der objektorientierung in php5 eigentlich kein var davor, sondern private, protected oder public, genau wie auch bei den Funktionen einer Klasse.
    Private heißt die Variable/Funktion ist nur innerhalb der eigenen Klasse verfügbar.
    Protected heißt die Variable/Funktion ist nur in der eigenen Klasse und in Mutter-/Tochter-Klassen verfügbar.
    Public heißt die Variable/Funktion ist auch außerhalb der Klasse verfügbar (natürlich mit Referenzierung auf das entsprechende Objekt).

    z.B.

    PHP
    class auto {
        private $kmh;
        ...
        public getZeit($entfernung) {
            ...
        }
    }

    Das ist komisch. ^^
    Mit meinem geposteten Script kriege ich bei allen 4 Funktionen immer das richtige Ergebnis, auch bei 4 Tagen.
    Da ist das Ergebnis überall der 20.04. was auch korrekt ist, da ich als Startdatum ja fix den 14.04. habe und nicht das heutige Datum.