Beiträge von Dennis The Menace

    Bevor du die Datei mit fopen( 'dateiname.txt','w'); öffnest.
    Du möchtest ja den kompletten Dateiinhalt auslesen.


    Nachdem du die Datei mit w geöffnet hast, ist deren Inhalt
    komplett gelöscht. Dann schreibst du erst den neuen Inhalt in die Datei
    (damit er ganz oben steht), und danach den ganzen alten Inhalt, den
    du mit file_Get_contents(); ausgelesen hast.


    Somit steht der letzte Beitrag immer an erster Stelle!

    Access, Datenbank, Quellcode, Registry, Programm zum Cracken von Acess Passwörtern... *häää?*


    Was hat; ich komm nicht mehr an den Quellcode [welchen?] ran; mit der von den ODBC Treibern [VS.NET] beschriebenen .mdb Datei zu tun?


    Warum soll man ein Programm zum knacken von Access Passwörtern nicht dazu verwenden können, um Access Passwörter zu knacken?!?


    Des weiteren wäre es etwas witzlos, wenn das Passwort unverschlüsselt in der Registry [generell: wenn es dort überhaupt wäre], steht - oder?^^


    Vielleicht könntest du dass noch mal kurz erklären, was denn nun genau nicht stimmt.

    Naja, in deinem Code gibt es oben weder


    $row_article_edit_choosen['autor_id']
    noch
    $row_staff_logged_in['id']


    In Anderen Worten, die sind beide leer; d.h. - die Bedingung wird immer erfüllt sein. So - als wäre sie gar nicht da! Also steht oben in Wirklichkeit nicht mehr als:


    PHP
    1. if ( $_GET['create'] || $_GET['edit'] )


    Des weiteren hattest du da zu viele Klammern drin^^
    Solche Fehler erkennt man übrigens, wenn man die Fehler/Notice-Ausgabe von PHP nicht unterdrückt:


    PHP
    1. error_reporting( E_ALL );
    Zitat


    unsicher aber funktionell ...


    Darum hat mal irgend ein schlauer Mensch Passwörter erfunden^^
    Ein 9 stelliges Passwort, was je Stelle aus knapp 100 Zeichen bestehen kann, hat:


    2,6561398887587476933878132203578e+95 mögliche Kombinationen.


    Wenn tolle Supercomputer es schaffen, 1 Milliarde *1 Millarde *1 Millarde * 1 Millarde * 1 Millarde * 1 Millarde * 1 Millarde (Das ist eine 1 mit 63 Nullen dahinter) Passwörter pro Sekunde zu testen, würde es im Worst Case immer noch 8422564335231949814141974,9503989 Jahre dauern, bis das Passwort herausgefunden wurde.


    Also wenn du dein Passwort nicht gerade vern nennst, sondern es wirklich 9 stellig ist, und du sowohl Groß/Kleinschreibung, Sonderzeichen und Zahlen mit einschließt, in einer Zeichenkette, die in keinem Wörterbuch irgendeines Landes vorkommt, sollte das als Sicherheit reichen!

    Zitat


    Ich hab auf der Maschine alle Rechte bis runter zum root.


    Zitat


    Und aus Sicherheitsgründen laufen nur lokale Scripte.


    Die Sätze wiedersprechen sich ;)


    Wenn du dich via SSH auf deinem Server anmeldest, und dich dort in MySQL als root anmeldest (oder über ein PHP Skript das Query sendest),


    findest du in der Datenbank mysql die Tabelle user. Dort ist die Spalte Host interessant:


    update mysql.user set Host = '*' where User = 'Dein Benutzername'


    Und schon hat sich das Problem erledigt^^

    Generell mal zu:


    Code
    1. <table width="400" border="1"><tr><td valign="top" width="100"><b>Name:</b></td><td valign="top"> '.$_POST['name'].
    2. '</td></tr><tr><td valign="top"><b>eMail:</b></td><td valign="top"> '.$_POST['mail'].
    3. '</td></tr><tr><td valign="top"><b>Text:</b></td><td valign="top"> '.$_POST['text'].
    4. '</td></tr></table><br><br>


    Vielleicht ist es dir schon aufgefallen, aber - ist dir klar, dass du da jedes Mal HTML Code; der sich nicht ändert, in die Datei mit reinschreibst?^^


    Das hat nämlich extrem viele Nachteile, nicht nur, dass es unheimlich viel Datenmüll ist, du erschwerst es dir dadurch auch extrem, später einmal das Design zu ändern / anzupassen, oder ein solches (was du jetzt hast), die Reihenfolge zu ändern. Vielleicht wäre es von dieser Sicht aus empfehlenswert, nur die Daten in die Textdatei zu schreiben, und den HTML Code erst beim auslesen hinzuzufügen.


    Ist - zugegeben - wenn man das das erste mal macht, ein bisschen tüftelei; aber gewiss nichts, was selbst einen Anfäger länger als eine Stunde aufhalten sollte.


    Generell zur Lösung des Problemes.
    Eine einfache gibts da gar nicht ;)


    Vorschlag 1)
    Du löscht die daten.txt Datei einfach noch mal und hängst dann neue Einträge nicht unten an, sondern schreibst sie oben in die Datei. Die vorgehensweise dabei wäre, bevor du einen neuen Eintrag hinzufügen möchtest, erst einmal den kompletten Dateiinhalt der Datei auszulesen. Das geht mit der Funktion file_get_contents();


    Dann löschst du die Datei (das kriegst du hin, in dem du die datei mit fopen('dateiname.txt','w'); für das schreiben öffnest und schreibst dann erst mit fwrite(); die Zeile, die neu hinzugefügt werden soll, und danach den Inhalt, den du zuerst ausgelesen hattest, in die Datei. Somit ist der neuste Beitrag immer an oberster Stelle. Noch leichter geht es aber leider bei deinem bestehendem System nicht.


    Vorschlag 2)
    Eine weitere Möglichkeit wäre (wobei du dann gleich alles neu machen kannst^^), beim Anzeigen ebenfalls die komplette Datei auszulesen (file_get_contents()); und dann an einer Zeichenkette die einzelnen Datensätze wieder zu trennen. Rein Theoretisch sollte ja nach jedem: '</td></tr></table><br><br>' ein neuer Datensatz anfangen. Daher könntest du das ganze daran in einem Array splitten:


    $array = explode( '</td></tr></table><br><br>', $inhalt_Der_ausgelesenen_datei );


    Nun kannst du die Reihenfolge einfach umdrehen (array_reserve(); ),und nun steht auch der letzte Beitrag an oberster Stelle.


    Du könntest dann alle Einträge mit


    foreach( $array as $eintrag )
    echo $eintrag . '</td></tr></table><br><br>';


    wieder ausgeben lassen.

    Naja, wenn du keinen administrativen Zugriff auf MySQL hast, hast du dann natürlich keine Chance ;) Ansonsten - (mit administrativen zugriff), kannst du einfach in der Usertabelle die REchte dementsprechend ändern.

    Was ist denn noch einfacher als Funktionen? Die packst die drei Funktion irgendwo hin in der PHP Datei, und brauchst dann nur noch


    PHP
    1. foreach( foobar( $img_root . $_GET['kat'] ) as $timestamp => $bildname )
    2. echo $timestamp.': '.$bildname."<br />";


    An der Stelle, an der du die Ausgabe haben möchtest, eingeben ;)


    Naja, ich nehm mal an, deine Sortierfunktion wird etwas verhauen, kannst es ja mal mit uksort in assoc with cmp versuchen.

    Irgendwie gibts $fd2 bei dir gar nicht, dann sollte dass is_file nicht laufen [wenn chdir darauf keinen einfluss nimmt], da php die Datei dann im falschen Verzeichniss sucht.
    Naja:



    Wäre so mein funktionaler Lösungsvorschlag