Beiträge von webmaster3000

    Zitat von "Basiii"

    Schritt 1: Lerne JavaScript


    Uneingeschränkt der beste Weg.


    Dennoch: wenn du Daten Senden willst, musst du in dein Skript noch

    Code
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');


    reinpacken.
    Außerdem muss die variable input so in Art aussehen: name=wert&name2=wert&name=wert ...


    Und ja, das false in open() gibt an, dass es nicht asynchron abläuft, d. h. dein Skript wartet, bis die Antwort kommt.

    So schwierig ist es doch nicht:

    • XMLHttpRequest-Objekt erzeugen
    • Request öffnen (request.open)
    • Request absenden (request.send)
    • Empfangene Daten auswerten


    Ein Tipp: Den Request nicht asyncron machen, damit das Script wartet, bis der Request fertig ist:

    Code
    request.open("get|post",url,false);


    Kann sein, dass ich da was vergessen habe, bin auch kein Ajax-Experte.


    Hoffe, ich konnte helfen,
    webmaster3000

    Die meisten Fehler kommen wirklich dadurch zustande, dass du, wie lauras sagte, die Überschriften falsch gestaltet hast.
    Korrigierst du das überall, sind es nur eine handvoll.


    Außerdem ist bei dem von dir verwendeten Doctype Pflicht, bei bildern ein alt-Attribut anzugeben, was du auch einmal vergessen hast.


    Gruß,
    webmaster3000


    PS: Schön, dass du dir Mühe gibst, validen Code zu erzeugen.

    Hallo Kalisha.


    Es liegt daran, dass du mysql_fetch_object() genommen hast.
    Diese Funktion erzeugt ein Objekt, dessen Attribute die Spalten der Tabelle sind.


    Eine Alternative wäre mysql_fetch_assoc(), die ein Array mit den Spalten als Index zurückgibt.


    Außerdem solltest du das neue Passwort nochmal vom Nutzer bestätigen lassen, um Tippfehler auszuschließen.


    Gruß,
    webmaster3000

    Das ist ein gewöhnlicher Fehler und es muss dir deshalb nicht leid tun.


    Zitat

    Davon abgesehen ist session_start() unbedingt nötig, da, wenn eine Session gestartet wird, ein Cookie an den Client gesendet wird.


    Diese Bemerkung ging an Yamram (hätte ich sicher auch besser kenntlich machen sollen :oops: ).

    Moment mal. Ich will ja jetzt keinen verunsichern, aber:


    8 Bit = 1 Byte (B)
    Soweit waren wir schon. Jetzt wirds aber kompliziert.


    1000 (10^3) B = 1 Kilobyte (kB) und 1024 (2^10) Byte = Kibibyte (KiB)


    So gehts dann auch weiter:
    1 000 000 (10^6) B = 1 Megabyte (MB) und 1 048 576 (2^20) B = 1 Mibibyte (MiB)
    1 000 000 000 (10^9) B = 1 Gigabyte (GB) und 1.073.741.824 (2^30) B = 1 Gibibyte (GiB)
    ...


    Bei Speicherangaben im Handel sing immer die dezimalen Einheiten gemeint.


    Für weitere Informationen siehe http://de.wikipedia.org/wiki/Byte#Vergleich.


    Gruß,
    webmaster3000

    Zitat von "Yamram"

    Eigentlich ist eine Klammer falsch gesetzt.


    Wenn du uns bitte verraten würdest, welche?


    Davon abgesehen ist session_start() unbedingt nötig, da, wenn eine Session gestartet wird, ein Cookie an den Client gesendet wird.
    Besagtes Cookie wird aber nicht von allein gesendet, sondern nur, wenn session_start() ausgeführt wird.


    Keine Ursache,
    webmaster3000

    Datenbak-Server gibt´s viele: PostgreSQL, den MS SQL Server und Cassandra, welchen auch Facebook einsetzt.
    Auch SQLite sollte man mit beachten.


    Zu deinem Einlog-Script: Würde man in großen Projekten SELECT * FROM `users` ausführen, wäre das schon fatal. Deshalb nimmt man hier meine Variante mit der WHERE-Klausel.


    Gruß,
    webmaster3000

    Hallo.


    Erstmal: Kommt eine Fehlermeldung von PHP (auch E_NOTICE)? Wenn du uns die vorenthalten hast, können wir nur raten.


    Das hab ich allerdings schon getan und spontan sind mir 2 Dinge aufgefallen, warum es nicht gehen könnte:

    • PHP
      <span class="syntaxdefault"><br />                $Benutzername </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'Benutzername'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">                $Passwort     </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'Passwort'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">                $Passwort     </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> md5</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$Passwort</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"> </span>

      [/quote]
      Du initialisierst die Variable "Passwort" zuerst mit der Klartexteingabe und überschreibst sie anschließend mit dem "gehashten" wert. Damit die Variable und die Datenbankdaten übereinstimmen, muss es auch in der Datenbank gehasht stehen.

    • Sind die Spaltennamen in der Datenbank auch großgeschrieben ($zeile['Benutzername'] und $zeile['Passwort'])


    Ansonsten noch ein paar Ratschläge auch bezüglich der Sicherheit:

    • Du solltest das Skript nach der Ausführung von header() mit exit() oder die() beenden, da der Browser der Weiterleitung nicht zwangsläufig folgen muss.
    • Du kannst die Location: ... Angabe auch relativ adressieren, sodass du es nicht mehr beim Upload ändern musst.
    • Du solltest die Eingaben UNBEDINGT escapen (siehe hier und hier).
    • Sind die Eingaben escaped, solltest du die Login-Daten nicht mit PHP überprüfen, sondern in der SQL-Query (a la "SELECT * FROM login WHERE ...) und dann mit mysql_num_rows() arbeiten.
    • Verstärke deine Sicherheit doch mit einem Salt.
    • Du musst das Login auch in deiner cms/index.php prüfen, gut geeignet dafür wären Sessions.


    So, das wärs fürs erste.


    Ich hoffe, dass ich dir helfen konnte,
    webmaster3000

    Hallo an alle anderen, die PHP ohne XAMPP unter Linux einsetzen.


    Wie kann ich mir alle Fehler (auch E_NOTICE) anzeigen lassen, ohne das in jedem Script anzugeben?


    Ich nutze PHP 3.4.6-13 unter Ubuntu 11.10 64-Bit mit Apache 2 als Server.
    Mein erster Gedanke war: die php.ini bearbeiten, aber es gibt 2 davon:

    • Eine in /etc/php5/cli
    • Und eine in /etc/php5/apache2


    Ich habe beide bearbeitet, sodass folgendes dort steht:


    Muss ich noch etwas verändern?


    In der Ausgabe von phpinfo() steht bei error_reporting 22527.


    Wenn ich noch irgendwelche Angaben machen muss, sagt es nur.


    Danke im voraus,
    bubi97

    Zitat von &quot;drPHIP132&quot;

    Unter dem Strich...
    _______________
    ist es nicht möglich das zu verbieten. Du kannst nur darauf hoffen, das die Person Snipping Tool nicht kennt und Java Script aktiviert hat


    ... und keinen Screenshot macht.


    Aber allgemein: Stimmt.

    Zitat von &quot;lauras&quot;

    Ich denke, dass es bei der Größe der Seite, wo das Updaten solcher Dateien auch mal untergehen kann, jedem selbst zugetraut werden kann, die Fehlermeldung zu lesen und sich dann zu denken "Ah, eine Seite vorher stand das doch mit ENGINE"..


    Das stimmt, vor allem, da Axel neben dem PHP-Kurs noch viele weitere Projekte betreut.