Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] myMates - Soziales Netzwerk

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] myMates - Soziales Netzwerk

    Moin hab heute ein script von mir bei sourceforge reingestellt an dem ich schon etwas länger gearbeitet habe:
    und zwar ist es ein internes social network auf php und mysql basis das dazu dienen soll das sich freunde auf ihrer eigenen plattform austauschen können das ganze ist stark inspiriert von facebook

    ich würde mich freuen wenn ihr euch das script mal anschauen würdet
    feedback ist auch immer gerne gesehen

    myMates | Get myMates at SourceForge.net

    danke


  • #2
    Hab nur mal grob drübergeschaut über den code, installieren verging mir als ich gesehen hab dass das teil dann ne mail verschickt.

    Vor allem solltest du dir wegen der Lizenz gedanken machen.

    Laut sourceforge ist es GPL, laut der mitgelieferten Lizenz ist es ... was anderes ? Und teile (Smarty, JQuery, etc) sind lgpl/bsd/MIT, etc, das sollte irgendwo vielleicht erwähnt sein oder eine license-verzeichnis wie man das bei vielen projekten findet wo die lizenesen des codes den du verwendet hast reinschreibst.

    Dazu kommt dass "deine Lizenz" wohl nicht OSI-konform ist und du deinen Code daher so wohl nicht bei sourceforge hosten darfst.

    Terms_of_Use – sitelegal
    Code Licenses Granted to Geeknet and Other Users

    When you submit, post, upload or otherwise provide Code to SourceForge.net, you must designate promptly the software license pursuant to which licensees (including Geeknet) obtain rights with respect to such Code. Except as otherwise expressly permitted by these Terms, any Code submitted to SourceForge.net must be licensed to Geeknet and other licensees under a license that is:

    1. compliant with the Open Source Initiative ("OSI")'s Open Source Definition (The Open Source Definition | Open Source Initiative) or
    2. certified as an "OSI-Approved License" (Open Source Licenses | Open Source Initiative).
    Der code allgemein sieht sehr chaotisch aus, php4, globale variablen, ne menge konstanten, gemischt mit unterschiedlichen einrückunge (tabs + spaces vermischt), etc.
    Die "klassen-dateien" enthalten nicht nur klassen sondern auch code.

    Die phpdoc-verwendung lässt darauf schließen dass du wohl keine IDE nutzt oder auch noch nie ne api-doku deines systems erstellt hast. Etliche return haben kein @ davor, teilweise heißt es @returns, bei @param ist die reihenfolge:
    @param &typ& &varname& &description&
    ... etc

    Eine mysql-resource sollte man vielleicht in der db-klasse speichern und nicht in einer konstanten, siehe auch manual:

    PHP: define - Manual
    It is possible to define resource constants, however it is not recommended and may cause unpredictable behavior.
    Einfach mal #_ in allen querys ersetzen kann unter umständen auch deskturiv sein, weil sowas könnte ja auchmal in input-daten drinstehen und damit verfälscht du dann user-input. suchen/ersetzen in einem db-query ist ohne einen parser eigentlich ein no-go.

    Ein haufen debug-code ist da noch drin und sowas:

    PHP-Code:
    debugLog("rss Klasse init""Die rss Klasse zur erstellung von Newsfeeds konnte erfolgreich initialisiert werden"__FILE__,__LINE__); 
    hinter einer klassen-deklaration ist etwas ... komisch

    Dein regex für emailadresse-validierung erlaubt keine Umlaute, bzw. allgemein keinerlei nicht-lateinischen zeichen (seit mai sind die erlaubt).
    -> Internationalizing Domain Names in Applications – Wikipedia

    Die ?> am ende kannst du dir sparen, führt nur schnell dazu dass man unnötige leerstellen/umbrüche im code hat und damit Probleme mit sessions und cookies bekommt (du hast in ein paar dateien welche aber glücklicherweise keine klassendatei sondern nur frontend-dateien, wo es kaum auffällt, ausser du gibst irgendwann mal binärdaten aus wo sowas den inhalt wirklich verfälschen könnte.)

    Dann dein ./tmp/sessions hat wohl keinen verzeichnis-schutz, es kann also jeder die session-daten anhand einer SID auslesen.
    Sinn von Session-Daten ist es ja imho dass sie eben serverseitig sind und nicht jeder user da reinschauen kann, macht auch das highjacking leichter, vielleicht noch ein directory-listing standardmäßig aktiv und man kann sich vielleicht noch die letzte Session des admins suchen

    Überall fliegen .DS_Store-Dateien rum und ein __MACOSX ist auch noch auf oberster Ebene in dem Archiv drin.

    Allgemein hat der Code bei mir eine hohe WTF-Rate hervorgerufen
    -> http://www.bellingnet.de/blog/2009/09/23/wtfm.jpg

    z.b. sowas:

    PHP-Code:
    if(CACHE_OPTION == CACHE_MEMCACHE) {
        class 
    cache extends cache_memcache { }
        
    debugLog("Memcache Initiert","Memcache als cache_option gewaehlt",__FILE__,__LINE__);
    } elseif(
    CACHE_OPTION == CACHE_MYMATES) {
        class 
    cache extends cache_myMates { }
        
    debugLog("cache wurde initiert","standard cache wurde initiert",__FILE__,__LINE__);

    was für einen sinn macht eine klasse die NUR von einer klasse erbt und sonst keine eigenen attribute/methoden hat ? sieht irgendwie eher danach aus dass deine "instanzierung-methode" für den cache etwas suspekt ist und tada:

    PHP-Code:
     function _new() {
        global 
    $__classes;

        
    $args func_get_args();
        
    $class=$args[0];
        if(
    $__classes[$class] != "" && $class != "db") {
            
    $res $__classes[$class];
        } else {
            if(!
    class_exists($class)) {
                
    //init class
                
    if (file_exists(BACKEND.$class.".class.php"))
                    include(
    BACKEND.$class.".class.php");
                else
                    return 
    false;

                
    $key md5(serialize($args));
            }

            for(
    $i 1$icount($args);$i++) $_args[] .= "\$args['".$i."']";

            
    $__args "";
            if(@
    count($_args) > '0') {
                
    $__args "(".implode(",",$_args).")";
            }

            
    $res "";
            eval(
    "\$res = new ".$class.$__args.";");
        
    debuglog("neue Klasse","Neue Klasse initiert:".$class);
            
    $__classes[$class] = $res;
        }
        return 
    $res;

    Das war dann der punkt wo ich ausgestiegen bin, weil es mir kalt den Rücken runterlief. Globale Registry + Klassen-instanzierung in einem und dann noch eval().

    Ich denke etwas mit dem Thema OOP beschäftigen wäre sinnvoll und z.b. Exceptions und soweiter.
    robo47.net - Blog, Codeschnipsel und mehr
    | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

    Kommentar


    • #3
      Danke dafür!

      das sind jetz schon zieeemlich viele dinge hab auch schon vermutet das es noch sehr weit von professionalität entfernt ist aber ich konnte zumindst was neues draus lernen

      Kommentar


      • #4
        "PHP-Kenntnisse: Fortgeschritten"

        Sorry aber habe mir gerade auch den Code angeschaut. Mmn sind die gezeigten Kentnisse nicht über den eines Anfängers hinaus.

        Ich arbeite nun bereits über 10 Jahre u.a. mit PHP und das täglich, verdiene damit auch mein Geld und kenne mich mit den gängigsten Frameworks aus (Zend, Symfony,...) und selbst ich würde mich nicht höher als Fortgeschritten bezeichnen, da man bei/mit PHP jeden Tag etwas neues lernen kann.

        Kommentar

        Lädt...
        X