kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: Cannot re-assign $this in ...on line 34

    geschrieben von kktbdev

    Meines Erachtens liegt der Fehler darin, dass ab der Version 5 von PHP die Variable $this reserviert ist für Klassen. Deshalb auch der fatale Fehler "Cannot re-assign" ( = kann nicht neu zuweisen).

    Ersetzte einfach alle $this mit $das und dann sollte es gehen (,wenn kein anderer Fehler drin ist oder wenn ich mich nicht geirrt habe :biggrin: ).

    EDIT: Darüberhinaus gelten alle Beanstandungen meines Vorredners!

    Beitrag geaendert: 30.1.2007 16:16:31 von kktbdev
  • in: brauche hilfe bei PHP Sicherheit

    geschrieben von kktbdev

    Mein allererster Tipp, wenn ich das so lese:

    Mach mal Backups!

    Insbesondere, wenn mehrere Leute die Dateien bearbeiten, wäre ein CVS (=Concurrent Versions System) angesagt, sonst kann es sehr schnell passieren, das zwar die Datei noch vorhanden ist, aber eine Änderung verloren geht, weil jemand eine ältere Version der Datei modifiziert und hochgeladen hat.
  • in: PHP LOGOUT problem

    geschrieben von kktbdev

    My 50cents:

    Also mein Anraten ist, benutzte session(), das läuft (bei richtiger Konfiguration von PHP) auch dann wenn der Browser keine Cookies akzeptiert, und das kommt öfter vor als man glaubt, insbesondere seit dem MSIE User paranoid gemacht werden und anfangen in Ihren Sicherheitseinstellungen rumspielen.

    Richtig ist ein Cookie mit expire date in der Vergangenheit löscht das Cookie, dann aber reicht
    setcookie("CookieName", $CookieWert, 0);

    da die Funktion time() die Sekunden seit dem 1.1.1970 00:00:00h zurückgibt und 1.1.1970 00:00:00h definitiv in der Vergangenheit liegt!

    Nichts destotrotz ist session() dem vorzuziehen.

    Erstens session() arbeitet auch mit Cookies, und wenn Cookies nicht möglich, wie oben gesagt, dann über Parameterübergabe in der GET und POST Methode.

    Zweites werden die Cookie-Daten serverseitig gespeichert und werden nicht bei jedem Aufruf einer Seite über das "unsichere" Netz geschickt.

    Drittens Du kannst Daten in die Session schreiben, auch wenn schon ein Teil des HTML Codes übertragen wurde (nicht möglich bei setcookie, da es im HTTP Header stattfindet).

    Viertens kannst Du mit einem einfachen session_destroy() die serverseitig gespeicherten Daten löschen.


    Auf das eigentliche Cookie sollte man in PHP eigentlich nur benutzen, wenn man Clientseitig Daten über verscheiden Sitzungen (Session) speichern will. Aber auch das ist nur dann nötig, wenn der User sich nicht einloggen muss, wenn er sich einloggen muss, kann man solche Daten auch aus einer Datenbank holen.

    Danke fürs Lesen
  • in: bild im php

    geschrieben von kktbdev

    Da Deine Fehlerbeschreibung sehr ungenau und kurz ist, kann ich nur ins Blaue schießen, überprüfe doch einmal ob in deinem input-Tag das Attribut accept gesetzt ist und ob dort als Wert so etwas wie text/php5 steht.

    Wie gesagt nur eine Vermutung.
  • in: Userbereich

    geschrieben von kktbdev

    100% von mir, sowohl das Script als auch der Text, Danke für die Unterstellung.
  • in: Ein Host mehrere DB´s wählen, klappt nicht -.-

    geschrieben von kktbdev

    Die Lösung hast Du bereits: 2 Verbindungen.

    Der Fehler liegt hier:
    //Standart Datenbank auswählen...
    
    mysql_select_db('$datenbank')or die('Die Datenbank existiert nicht!');

    Hier benutzt Du die Funktion RICHTIG, die Funktion mysql_select_db() gibt nur true bei Erfolg und false bei Fehlschlag zurück. Aber nicht das Verbindugs-Handle, welches Du hier versuchst zu bekommen:

    //Nun zum wichtigen Teil...die andere Datenbank...
    
    $which      = mysql_select_db('xxx_2',$verbindung)or die('Die Datenbank existiert nicht');


    Jetzt steht in der Variable $which (btw. unglücklicher Name für eine $var) entweder true oder false, was dann hier:

    $senden     = mysql_query($abfrage,$which);


    zu einem Fehler führt!

    Hoffe damit geholfe zu haben!
  • in: PHP-GTK Erfahrungen, Libraries

    geschrieben von kktbdev

    Hallo nochmal,

    ich habe vor eine GUI und ein Web-Inferface für eine MySQL gestützte Anwendung natürlich in PHP zu programmieren.

    Hat jemand bereits Erfahrung mit PHP-GTK (gimp took kit) gemacht und hat evtl. bereits einige Funktionen in einer Library in die man sich vielleicht einlesen kann?

    Thx!
  • in: Userbereich

    geschrieben von kktbdev

    Hi ich bin der Neue,

    zu erst einmal, danke für diese tolle Seite, hier mein erster kleiner Beitrag, ich hoffe geholfen zu haben.

    Passwortgeschütze Seiten mit PHP-Session, MySQL und HTTP 1.0/WWW-Authenticate

    Das Problem:
    Das HTTP Protokoll, ist mit über 15 Jahren für Computerverhältnisse wahnsinnig alt und für das was wir heutzutag im Internet machen wollen eigentlich unzureichend. Ein Manko des Protokolls ist, dass jede Anfrage als alleinstehende Entität vom Server interpretiert wird, d.h. es gibt keine eindeutige Übergabe von einem Dokument zum nächsten seitens des Protokolls, eine History auf der Klientenseite oder serverseitig mittels IP Adresse und des HTTP-Referers ist zwar vorhanden aber vor Zugriff Dritter nicht sicher.

    Die PHP Session:
    Glücklicherweise bietet PHP mit der Session-Funktionsfamilie ein sehr leichtes und mächtiges Tool um Besucher während ihres Besuches eindeutig zu identifizieren und Informtionen von einem zum nächsten Dokument zu übertragen. Dies funktioniert mit Hilfe von Cookies und falls diese aus welchem Grund auch immer vom Klienten nicht unterstützt werden mittels einer Session-ID, die über die POST oder GET-Methode automatisch übergeben werden.
    Mehr zu diesem Thema findest Du hier: http://de3.php.net/manual/de/ref.session.php

    Die Zugangsdaten:
    Da wir einen passwortgesützten Bereich bauen wollen, in dem nur registrierte Benutzer Zugriff auf Daten oder Funktionen haben, müssen wir irgendwo die Benutzerdaten speichern. Wie der Titel dieser Diskussion impliziert haben wir uns für MySQL entschieden, und das ist gut so. Wir haben also eine Datenbank in der sich eine Tabelle befindet, in der wiederrum sich Felder wie "user" und "pass" befinden. Wie die Daten da rein kommen überlasse ich erstmal Eurer Fantasie, für uns ist es erstmal nur wichtig, dass diese Daten gegeben sind.

    Die Zugangsberechtigungsüberprüfung:
    Nun muss das PHP-Skript nur noch folgendes leisten:

    1.) Session überprüfen, ob der Besucher bereits eingeloggt ist
    2.) ggf. übermittelt Zugangsdaten mit der Datenbank abgleichen
    3.) wenn 1.) oder 2.) erfolgreich ist, Zugang gewähren
    4.) wenn 1.) und 2.) nicht erfolgreich ist, Zugang verwähren
    5.) wenn die Sitzung ausgelaufen ist, den Zugang wiedersperren

    Zu Punkt 1.): Kein Problem, weil wir die von PHP zur Verfügung gestellte Session-Funktion benutzen.

    Zu den Punkten 3.) und 4.): Kein Problem eine einfache Bedingungsabfrage, mit if/else oder switch leicht zu lösen.

    Bei Punkt 2.): Stellt sich nur noch die Frage, wie kommen die Daten rein. Die einfachste Lösung ist über die POST und/oder GET Methode eines HTML-Formulars. IMHO eleganter ist die hier vorgestellte Lösung über WWW-Authenticate. Das HTTP Protokoll unterstützt im Header (also bevor irgendwelche Daten einer Seite übermittelt werden) die Übergabe von Zugangsdaten. Bekannt ist diese Technologie auch fälschlicherweise als htaccess. Dabei ist htaccess nur die Art und Weise, wie ein Apache Webserver WWW-Authenticate implementiert, nämlich über Konfigurationsdirektiven, die bei Bedarf für ein Verzeichnis über eine Datei mit dem Namen .htaccess nachträglich vom Server eingelesen werden. Meistens gehört dann noch eine sogenannte .htpasswd Datei dazu, in der die Usernamen und Passwörter (meist verschlüsselt) gespeichert werden. Da die Funktion WWW-Authenticate keine Apache eigene, sondern eine Funktion des HTTP-Protokolls ist, können wir auch in PHP darauf zugreifen. Das geschieht in der PHP-Funktion header(), die einige von Euch vielleicht zum Weiterleiten benutzen, und dem Array $_SERVER, in dem neben anderen wichtigen Dingen auch die Zugangsdaten auftauchen, die in das POP-UP von WWW-Authenticate eingegeben werden.

    Wenn einmal verstanden, sollte auch das kein Problem in der Programmierung darstellen.

    Punkt 5.) allerdings stellt, wenn man sich für WWW-Authenticate entschieden hat, ein Problem dar, und zwar deshalb, weil die verschiedenen Browser sich nicht an die RFCs halten und unterschiedlich mit der Übergabe und Speicherung der Zugangsdaten umgehen. Im einfachsten Fall reicht es die Session mit session_destroy() zu zerstören. Da aber die Browser die Credentials (Zugangsdaten) bei einem Neuaufruf wieder übermitteln, wird jedesmal ein neue berechtigte Session entstehen. Die Lösung die alle gängigen Browser abdeckt ist, skript-/serverseitig das übermittelt Passwort überschreiben und gleichzeitig ein neues Realm setzen. Realm (englisch für Bereich/Reich/Gebiet) steht für ein serverseitig gesetzten Namen für den geschützten Bereich, auch dieser wird in der Funktion header() gesetzt und ist somit dynamisch und kann von uns verändert werden.

    Alle fünf Punkte in eine Funktion gepackt, die true zurück wirft, wenn jemand rein darf, und fertig.

    Lange Rede kurzer Sinn hier ist der dazu gehörende Code, den ich vor langer Zeit einmal geschrieben habe, der ist so alt, das der public domain ist, als zur freien Verfügung. :cool:

    /* Vars to set in a config file / config array
     * $config['auth']['relam'] = 'my restricted area';
     * $config['session']['ttl'] = 3600; // ttl = time to live, in seconds
     *
     * before calling the function, do this:
     * $dbc = mysql_connect("host", "user", "pass", "database");
     * session_start();
     */
    
    function auth()
    {
        global $config, $dbc;
        $return = false;
        $now = time();
        if (!isset($_SESSION['thisrelam']))
        {
            $_SESSION['thisrelam'] = $config['auth']['relam'] . " (ConnectID:".md5($now).")";
        }
        $relam = $_SESSION['thisrelam'];
    
        // check for session values
        if (is_numeric($_SESSION['uid']))
        {
            if ($_SESSION['expire'] < $now) logout();
            else
            {
                 $return = true;
                $_SESSION['expire'] = $now + $config['session']['ttl'];
            }
        }
        elseif (isset($_SERVER[PHP_AUTH_USER]) && isset($_SERVER[PHP_AUTH_PW]) && !isset($_SESSION['logout']))
        {
            //connect to database and get info!
            $sql = "SELECT * FROM `your_user_tab` WHERE `user` = '$_SERVER[PHP_AUTH_USER]' AND `pass` = '$_SERVER[PHP_AUTH_PW]'";
            $query = mysql_query($sql,$dbc); // where $dbc is you connection handle
            if (mysql_num_rows($query) == 1)
            {
                $return = true;
                $_SESSION['expire'] = $now + $config['session']['ttl'];
            }
            else
            {
                
                header('HTTP/1.0 401 Unauthorized');
                $errflag = 1;
                exit;
            }
        }
        else
        {
            unset($_SESSION['logout']);
            unset($_SERVER[PHP_AUTH_USER]);
            header('WWW-Authenticate: Basic realm="'.$relam.'"');
            header('HTTP/1.0 401 Unauthorized');
            $errflag = 1;
    		exit;
    
        }
    	if (isset($errflag))
    	{
    		 echo "access denied<hr>"; // put your access denied html code here, or redirect!
    	}
        return $return;
    }


    Packe die Funktion in eine library, die Du include'st und schütze Deine PHP-Seite so:

    include_once("/pfad/zu/der/funktions/bibliothek.php");
    if (auth())
    {
     /*
      * Hier den PHP Code / HTML der geschützen Seite
      *
      */
    }


    Extremst wichtig und darum auch zuletzt! Wenn Ihr mit der header()-Funktion am HTTP Header rumspielt muss das VOR der Übertragung jedes HTML Codes (auch Leerzeichen) passieren.

    Wenn Du bis hier hin durch gehalten hast, danke fürs Lesen!

    Beitrag geaendert: 30.1.2007 14:31:32 von kktbdev

    Beitrag geaendert: 30.1.2007 14:32:06 von kktbdev

Login zum Webhosting ohne Werbung!