Otto Normaluser wird es wahrscheinlich eh nicht auffallen, wenn man aber als Entwickler auch auf das wie achtet, vermeidet man älteren Code in HTML5-Doctype.
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
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.
-
Abgesehen davon, dass es schlechter Stil ist, den HTML5-Doctype zu schreiben und dann HTML 4 oder XHTML zu verwenden, ist dagegen nichts einzuwenden.
-
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: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ß,
webmaster3000PS: 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.
ZitatDavon 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 -
Hast du.
Jedes Zeichen ist (im ASCII-Code) genau ein Byte groß. Ein Byte besteht aus 8 Bit. Ein Bit kann nur die Werte WAHR (1) oder FALSCH (0) haben.
Demnach sind es 8 Byte. -
Du musst auf beiden Seiten session_start ausführen, am besten ganz oben.
-
Ich hab´s!
Du hast vergessen, die Sessions mit session_start() zu aktivieren.
EDIT: In deiner CMS-Datei musst du oben auch session_start() hinschreiben. -
Lass dir mal mit var_dunp() den Inahlt von $_POST und $zeile ausgeben und poste es hier...
Mal schauen, ob uns dann noch was auffällt. -
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 -
-
Klingt plausibel.
Fragt sich nur, ob du auf eine Kündigung bestehen kannst, wenn die Mindestlaufzeit noch nicht abgelaufen ist?
Gruß,
webmaster3000 -
Danke, funktioniert (bei mir) auch in Unterverzeichnissen.
Gruß,
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:
Code
Alles anzeigen; Error Level Constants: ; E_ALL - All errors and warnings (includes E_STRICT as of PHP 6.0.0) ; E_ERROR - fatal run-time errors ; E_RECOVERABLE_ERROR - almost fatal run-time errors ; E_WARNING - run-time warnings (non-fatal errors) ; E_PARSE - compile-time parse errors ; E_NOTICE - run-time notices (these are warnings which often result ; from a bug in your code, but it's possible that it was ; intentional (e.g., using an uninitialized variable and ; relying on the fact it's automatically initialized to an ; empty string) ; E_STRICT - run-time notices, enable to have PHP suggest changes ; to your code which will ensure the best interoperability ; and forward compatibility of your code ; E_CORE_ERROR - fatal errors that occur during PHP's initial startup ; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's ; initial startup ; E_COMPILE_ERROR - fatal compile-time errors ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) ; E_USER_ERROR - user-generated error message ; E_USER_WARNING - user-generated warning message ; E_USER_NOTICE - user-generated notice message ; E_DEPRECATED - warn about code that will not work in future versions ; of PHP ; E_USER_DEPRECATED - user-generated deprecation warnings ; ; Common Values: ; E_ALL & ~E_NOTICE (Show all errors, except for notices and coding standards warnings.) ; E_ALL & ~E_NOTICE | E_STRICT (Show all errors, except for notices) ; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) ; E_ALL | E_STRICT (Show all errors, warnings and notices including coding standards.) ; Default Value: E_ALL & ~E_NOTICE ; Development Value: E_ALL | E_STRICT ; Production Value: E_ALL & ~E_DEPRECATED ; http://php.net/error-reporting error_reporting = E_ALL ; This directive controls whether or not and where PHP will output errors, ; notices and warnings too. Error output is very useful during development, but ; it could be very dangerous in production environments. Depending on the code ; which is triggering the error, sensitive information could potentially leak ; out of your application such as database usernames and passwords or worse. ; It's recommended that errors be logged on production servers rather than ; having the errors sent to STDOUT. ; Possible Values: ; Off = Do not display any errors ; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) ; On or stdout = Display errors to STDOUT ; Default Value: On ; Development Value: On ; Production Value: Off ; http://php.net/display-errors display_errors = On
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 "drPHIP132"
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 "lauras"
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.