Beiträge von spinball

    Normalerweise benutzt man dafür die Funktion eval. Es ist aber ganz schön riskant, soetwas zu machen. Du solltest dir vielleicht Alternativen dazu überlegen. Zum einen gibt es die Möglichkeit, die Pfade zu den Dateien, die inkludiert werden sollen, extra in die Datenbank zu schreiben. Du brauchst dazu neue eine Tabelle, in der die Pfade als Strings stehen.

    PHP
    $result = mysql_query("SELECT pfad FROM modules WHERE id = '$articleID'");
    while($row = mysql_fetch_assoc($result)) {
    	include($row['pfad']);
    }

    Oder du schreibst eine Funktion, die auf Schlüsselworte in den Strings reagiert. Dann kannst du die Include-Befehle in der Datenbank lassen.

    PHP
    function parse($str) {
    	preg_match_all("/{include:(.+).php}/iU",$str,$found);
    	foreach($found[1] as $path) {
    		include($path.".php");
    	}
    	return str_replace($found[0],"",$str);
    }

    Diese Funktion sucht im String nach "{include:bla.php}", inkludiert die Datei und löscht den Befehl aus dem String. Mit regulären Ausdrücken kann man viel Unsinn treiben. Beware!

    Wenn man sich mit Computern nicht auskennt, liegt es nahe anzunehmen, dass die Bedienung eines solchen Geräts nicht kompliziert sei; man durchblickt die aufwendige Materie nicht. Im Auge des Kaufmanns sind Informatiker die Nerds, welche in James Bond per Knopfdruck den russischen Satelliten hacken können. Diese asozialen Geschöpfe sollten dann gefälligst froh sein, wenn sie in einer renommierten Firma angestellt werden. Dort sollen sie dann, wie gesagt, das gesamte Rechenzentrum alleine bedienen. Sie haben ja sowieso viele viele Knöpfe am Keyboard.

    Möchtest du HTML klauen? :p

    Dann nimm doch preg_match_all und finde alle INPUT-Tags. Die kannst du dann erneut nach beliebigen Attributen durchsuchen:

    Diese Funktion durchsucht die Website an der Adresse $path und liefert die Attribute aller darin enthalten INPUT-Tags. Lecker!

    Gar nicht. Diese Werte werden nicht an PHP übergeben. Pech. :wein:

    Wenn du dir aber das Array $_POST ansiehst, dann kannst du davon auf die Formularstruktur rückschließen: Falls $_POST['backerbse'] gesetzt ist, muss es auch ein Feld im Formular mit diesem Namen geben.

    Wenn du weitere HTML-Attribute des Formulars brauchst, musst du weiter Felder ins Formular schreiben, die jene Attribute als eigene Werte enthalten.

    Code
    <input type="text" name="backerbse" value="lecker" alt="Magst du Backerbsen?" />
    <input type="hidden" name="backerbse_alt" value="Magst du Backerbsen?" />

    $_POST['backerbse'] ist nun "lecker" und $_POST['backerbse_alt'] ist "Magst du Backerbsen?".

    Allerdings entschwindet mir der Sinn dahinter; kannst du doch für das Erzeugen des Formulars bereits PHP verwenden und bist dir über die ALT-Felder im Vorhinein im Klaren.

    Ich habe es noch nie geschafft, eine Website mit gutem Inhalt, sauberem Code und den ganzen goldenen Lehrsätzen folgend in Google aufzulisten. Aber ich habe leere(!) Seiten auf Platz 1 gebracht. Das Geheimnis? Hyperlinks! Je öfter andere zu dir verweisen, umso höher stuft dich Google ein. Egal, was auf deiner Seite sein mag.

    Die folgende Funktion fügt dem Passwort-String mittels einer FOR-Schleife genau $len mal ein beliebiges Zeichen aus dem String $charset hinzu und liefert ihn mit return. So hat man volle Kontrolle über alle möglichen Zeichen, aus denen ein Passwort bestehen darf. Reguläre Ausdrücke sind hier fehl am Platz. Mit Regulären Ausdrücken könntest du vielleicht prüfen, ob ein bereits bestehendes Passwort aus einem vorgegebenen Zeichensatz gebildet werden kann, o. ä. Zum Generieren eines neuen Passwortes brauchst du aber keine Regulären Ausdrücke.

    Wir sollten Geld dafür verlangen. ;)

    Wie schreibe ich ein Skript, das automatisch startet?



    Soetwas wird üblicherweise von einem Serverdienst verwaltet und hat nichts mit deinem eigentlichen Programm zutun. Du schreibst dein Programm quasi ohne Achten auf den Ausführungszeitpunkt und sagst deinem Server zum Beispiel, dass er dieses Programm jeden Tag um 13 Uhr ausführen soll (Siehe: Cronjob).

    In deinem Problemfall ist das aber gar nicht notwendig. Du kannst diese Überprüfung bei jeder Anfrage stellen:

    PHP
    UPDATE users SET password = '' WHERE DATE_ADD(lastlogin,INTERVAL 1 DAY) < NOW();



    Diese SQL-Abfrage setzt die Spalte password überall auf einen leeren String, wo das Datumsfeld lastlogin mindestens einen Tag alt ist.

    Dann kann man sich aber mit jenen Accounts nicht mehr einloggen. ;)
    Eine bessere Idee wäre, das Problem auszulagern: Und zwar solltest du die Passwörter nicht gleich löschen, sondern die restliche Funktionalität deiner Programme einfach für die blockieren, welche alte Passwörter benutzen.

    PHP
    SELECT * FROM users WHERE id = $id AND DATE_ADD(lastlogin,INTERVAL 1 DAY) < NOW();



    Insofern die Spalte id deine Benutzertabelle eindeutig durchnummeriert, kannst du mit dieser Abfrage feststellen, ob der aktuelle Benutzer - identifiziert durch $id - ein altes Passwort benutzt. Falls ja, liefert die Anfrage eine Zeile zurück. Falls nicht, keine.

    sorry, ich bin seit 10 jahren als softwareentwickler

    ...

    wenn der kunde für Funktion X und Funktion Y bezahlt UND dadurch keine Widersprüche mit den bisherigen Anforderungen entstehen, dann sollte das kein Problem darstellen.

    Du hast ein Schweineglück, mein Lieber. Lass uns tauschen!

    Ich habe noch nie erlebt, dass sowohl Benutzername als auch Passwort zufällig generiert werden. Das ist sehr unüblich. Nichtsdestotrotz kann man es folgendermaßen realisieren:



    Diese Funktion wurde unter der präpotenten Annahme programmiert, dein Problem verstanden zu haben. Sie liefert ein Array mit zwei Elementen: Benutzername und Passwort-Hash. Dir sollte aber bewusst sein, dass es einen Aufwand von (Anzahl existierender Benutzer) hoch (Anzahl Haare auf meiner Brust) benötigt und nicht empfehlenswert ist.

    PS: Ich bin stark behaart.

    Lieber osiris, ich konnte selbst beim 3784973498. mal Durchlesen nicht verstehen, was du vorhast. Entweder dein Lösungsansatz ist falsch, oder du tust dir einfach nur schwer, dich auszudrücken.

    Üblicherweise trennt man Benutzername und Passwort in der Datenbank. Ist das erst einmal getan, kannst du mit der Funktion in_array arbeiten:

    PHP
    $all_pwds = array(...);
    do {
        $pwd = md5(mt_rand());
    } while(in_array($pwd,$all_pwds));



    Jetzt speichert die Variable $pwd ein neues Passwort-Hash.