PHP rocks! wünscht allen Mitgliedern einen guten Rutsch ins neue Jahr 2017 !!!
Hinweis: Das Forum zieht um! Um keine Datenverluste zu haben, schalten wir zwecks Übernahme der Daten das Forum am Sonntag, den 24.04.2016 um ca. 21:00 Uhr offline und passen anschliessend die DNS-Einträge an.
www.php-rocks.de wird euch dann nach den Aktualisierungen der DNS-Server wieder wie gewohnt uneingeschränkt zur Verfügung stehen.
Danke für euer Verständnis!

Hallo, Gast
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.

Benutzername/E-Mail:
  

Passwort
  





Durchsuche Foren

(Erweiterte Suche)

Foren-Statistiken
» Mitglieder: 291
» Neuestes Mitglied: awajonn11
» Foren-Themen: 171
» Foren-Beiträge: 901

Komplettstatistiken

Aktive Themen
Kaufen Sie ein TELC-GOETH...
Forum: Off Topic
Letzter Beitrag: awajonn11
12.04.2024, 13:37
» Antworten: 0
» Ansichten: 184
Kaufen Sie ein TELC-GOETH...
Forum: PHP Basics
Letzter Beitrag: awajonn11
12.04.2024, 13:35
» Antworten: 0
» Ansichten: 97
PHPMailer Pfad wird nicht...
Forum: PHP Basics
Letzter Beitrag: Arne Drews
23.08.2022, 21:07
» Antworten: 5
» Ansichten: 2.877
PHP 8.1: Endlich Enums in...
Forum: PHP Basics
Letzter Beitrag: Arne Drews
22.04.2021, 16:55
» Antworten: 1
» Ansichten: 2.697
Einfache Template Engine
Forum: PHP Template Engines
Letzter Beitrag: Arne Drews
22.04.2021, 16:49
» Antworten: 4
» Ansichten: 11.086
OAuth - Should I "scrambl...
Forum: Off Topic
Letzter Beitrag: Till
05.01.2020, 04:55
» Antworten: 0
» Ansichten: 7.881
"Invisible" Captcha
Forum: PHP Basics
Letzter Beitrag: Arne Drews
11.12.2019, 15:00
» Antworten: 5
» Ansichten: 10.412
Projektvorstellung - Test...
Forum: Off Topic
Letzter Beitrag: Till
22.11.2019, 20:03
» Antworten: 3
» Ansichten: 5.668
POST/GET routes deklarier...
Forum: PHP Basics
Letzter Beitrag: Till
14.11.2019, 19:44
» Antworten: 2
» Ansichten: 4.698
PHPMailer
Forum: PreComposed
Letzter Beitrag: Arne Drews
20.10.2019, 12:44
» Antworten: 6
» Ansichten: 8.668

 
  IE: Nullverweis, nicht null und kein Object (Proxy)
Geschrieben von: Till - 18.09.2016, 14:33 - Forum: JavaScript / JavaScript Frameworks / Ajax - Antworten (3)

Es nervt, es hält mich auf, und es ist peinlich: Immer noch kriege ich den IE nicht in den Griff.

Ich möchte ein Object aus einem anderen "erstellen", zur Minute ist es mir gerade egal ob es kopiert, vererbt oder ein prototype wird, in allen anderen Browsern funktionieren mehrere Möglichkeiten, im IE funktioniert gar nichts Blush

Zitat:SCRIPT5007: Die Eigenschaft "__magic_proxy" eines undefinierten oder Nullverweises kann nicht abgerufen werden.
Cannot create proxy with a non-object as target or handler

Object.create : Argument ist nicht null und kein Object
Function.prototype : geht auch irgendwie nicht, Object nicht erweiterbar
new Object
jQuery.extend
literal
...
geht alles irgendwie nicht?

Der IE 11 hat noch kein Proxy Objekt und benutzt das polyfile!?

Code:
var _ObjectFlow = function()
{

    var _Obj =
    {


        inherit : function($parent,_new)
        {
            var sup = $parent, base = _new;
            var descriptor = Object.getOwnPropertyDescriptor(
                base.prototype,"constructor"
            );
            base.prototype = Object.create(sup);
            var handler =
            Object.create({
                constructor: function(target, args)
                {
                    var obj = Object.create(base.prototype);
                    this.apply(target,obj,args);
                    return obj;
                },
                apply: function(target, that, args)
                {
                    base.apply(that,args);
                }
            });
/*
            if('function'===typeof Promise.polyfill)
            {
                var proxy = Object.create(sup, base);
            }else
            {
                var proxy = new Proxy(base.prototype,handler);
            }
*/
            var proxy = new Proxy(base.prototype,handler);
            
            

            descriptor.value = proxy;
            try
            {
                Object.defineProperty(base, "constructor", descriptor);
            }catch(err)
            {
                console.error(err);
            }

            return proxy;
        },

        extend : function(sup,base)
        {
            var descriptor = Object.getOwnPropertyDescriptor(
                base.prototype,"constructor"
            );
            base.prototype = Object.create(sup.prototype);
            var handler =
            Object.create({
                constructor: function(target, args)
                {
                    var obj = Object.create(base.prototype);
                    this.apply(target,obj,args);
                    return obj;
                },
                apply: function(target, that, args)
                {
                    sup.apply(that,args);
                    base.apply(that,args);
                }
            });
/*
            if('function'===typeof Promise.polyfill)
            {
                var proxy =Object.create(sup.__proto__, base);
            }else
            {
                var proxy = new Proxy(base,handler);
            }
*/
             var proxy = new Proxy(base,handler);


            descriptor /* .value */ = proxy;
            try
            {
                Object.defineProperty(base.prototype, "constructor", descriptor);
            }catch(err)
            {
                console.error(err);
            }

            return proxy;

        }

    };

    return _Obj;
};

var OverloadableObject = /* _ObjectFlow().inherit(_ObjectFlow, _ObjectFlow); */ _ObjectFlow;
OverloadableObject.prototype.__noSuchMethod__ = function(name, args)
{
    if('function' === typeof this.__call)return this.__call(name, args);

    console.warn('Method ' + name + ' of overloaded object and magic method __call is not defined!');

};


/*
var $FRDL = new OverloadableObject();
*/

var $FRDL = _ObjectFlow().inherit(OverloadableObject , function()
    {

    });







/**
*   var t = frdl.overload({}); t.__call=function(name,args){alert(name);alert(JSON.stringify(args));}; t.hallo('welt')
*/

$FRDL.I = {

    constructor : function(){
        
    },

    has: function(target, name)
    {
        return true;
    },
    get: function(target, name, receiver)
    {


        if (name in target.__proto__)
        {
            return target.__proto__[name];
        }


        if (name in receiver.__proto__)
        {
            return receiver.__proto__[name];
        }


        return function()
        {


            try
            {
                var args = Array.prototype.slice.call(arguments);

                if(  'function' === typeof receiver.__call )return receiver.__call(name, args);

            }catch(err)
            {
                console.error(err);
            }


        };
    },


    apply: function(target, THIS, args)
    {
        target.apply(THIS,args);
        this.apply(THIS,args);
    }


};




try{
$FRDL.IO = Object.create( {}, $FRDL.I);    
$FRDL.IO.__magic_proxy = new Proxy(OverloadableObject, $FRDL.I);
}catch(err){
    console.warn(err);
    $FRDL.IO = $.extend($FRDL.I,{
          __magic_proxy : new Proxy(OverloadableObject, $FRDL.I)
    });
}

Drucke diesen Beitrag

  Mehrzeiliges Matching mit RegEx
Geschrieben von: Arne Drews - 15.09.2016, 21:07 - Forum: PHP Basics - Antworten (6)

Hallo,

Ich komme grad nicht drauf, wie ich bspw. aus folgendem Text

Code:
{{

   test foo:bar
   test foo:baz

}}
die Werte der beiden Zeilen mit test bekomme, also
Code:
foo:bar // Matching #1
foo:baz // Matching #2
Ich möchte, dass für jede Zeile ein Matching existiert.

Mein aktueller Stand von mehrfachen Tests sieht so aus:
Code:
/(?<=\{\{)\s+?test\s+([\w:]+)/ius
Der matcht aber nur den ersten ( ich verwende preg_match_all )

Die Regel soll lauten: Innerhalb der doppelt geschweiften Klammern alle Werte, die nach der Zeichenfolge "test" kommen, als separates Matching!

Ohne die geschweiften Klammern zu berücksichtigen bekomme ich das hin, aber ich möchte explizit vermeiden, dass eine Wertangabe zufällig im normalen Dokumentenbereich existiert und ebenfalls gematcht wird.

Wer kann mir einen Schubs in die Richtung geben?
Danke

Drucke diesen Beitrag

  Wieder mal CORS/frames
Geschrieben von: Till - 13.09.2016, 19:23 - Forum: JavaScript / JavaScript Frameworks / Ajax - Antworten (1)

Möchte eine Seite im frame aufrufen:

Zitat:XMLHttpRequest cannot load api.webfan.de/api-d/4/js-api/library.js?plugin=alertify. The 'Access-Control-Allow-Origin' header has a value 'http://domainundhomepagespeicher.webfan.de' that is not equal to the supplied origin. Origin 'frdl.webfan.de' is therefore not allowed access.
my-apps.297.html:1 XMLHttpRequest cannot load api.webfan.de/api-d/4/js-api/library.js?plugin=hash. The 'Access-Control-Allow-Origin' header has a value ' domainundhomepagespeicher.webfan.de' that is not equal to the supplied origin. Origin 'frdl.webfan.de' is therefore not allowed access.

Dabei habe ich:
PHP-Code:
public static function originHeaders(){
    
header("Access-Control-Allow-Credentials: true");        
    
header("Access-Control-Allow-Origin: ".((isset($_SERVER['HTTP_ORIGIN'])) ? $_SERVER['HTTP_ORIGIN'] : "*"));
    
header("Access-Control-Allow-Headers: X-Requested-With"); 
// NUR EINSCHRÄNKUNG * GEHT NICH ! header('X-Frame-Options: ALLOW-FROM *'); */
//header('X-Frame-Options: ALLOW-FROM http://shell.frdl.de');
    //header_remove("X-Frame-Options"); 
if(isset($_SERVER['HTTP_ORIGIN'])){
    
header('X-Frame-Options: ALLOW-FROM '.$_SERVER['HTTP_ORIGIN']);
}else{
    
header_remove("X-Frame-Options"); 
}
    
header_remove("X-Frame-Options"); 
    
    
header("Vary: Origin");             
 } 
Komischerweise ging es vorher mit header_remove("X-Frame-Options"); , sollte ich die Variante mit X-Frame-Options: ALLOW-FROM verwenden?
Im Firefox funktioniert es, im Opera gibt es diesen Security error, mh?
domainundhomepagespeicher.webfan.de/cdn/application/webfan/app.html#/com.webfan.my/browse/http:~2F~2Ffrdl.webfan.de~2Fmy-apps.297.html

Drucke diesen Beitrag

  Filesystem API, eval + function serialization
Geschrieben von: Till - 07.09.2016, 13:18 - Forum: JavaScript / JavaScript Frameworks / Ajax - Antworten (1)

Hallo,
bei einer Funktionalität welche essentiel(!) ist komme ich nicht weiter und ärgere mich seit einigen Stunden schwarz, wäre also wirklich sehr, sehr dankbar wenn mir jemand helfen könnte!

Ich habe ein "require shim", ähnlich der node module/require Funktion, bzw. in Verwendung mit und ohne node.js.
https://github.com/frdl/webfan-require
Das funktioniert soweit.

Für offlinecache und performance möchte ich nun den require cache clientseitig speichern, dazu verwende ich Filer, eine Art polyfill für die HTML5 filesystem API.
Das Serialisieren der Objekte klappt nicht so ganz, weshalb ich mich zunächst der Einfachheit halber auf das Speichern des source codes beschränke (welchen ich beim laden eval).

Und hier hakt es:
Beim Ausführen des codes aus dem cache wird irgendwie nur das boot/main require-modul ausgeführt, dann stockt es "irgebndwie". Ich bekomme danach auch keine Meldung mehr von der Console welche mir weiterhelfen könnte, <boot>.complete() bzw. 'LINQ AS "scope.SQL";' ist die letzte Meldung.

Zum de-/aktivieren der cache funktion kann folgendes ein-/ bzw. auskommentiert werden:

Code:
/* */        
                console.deprecated('Cache buggy, skipped!');
                return;

Wie gesagt wäre ich seeehr dankbar, und würde bei Bedarf auch die Helfer als Authoren einfügen oder auch anderweitig vergüten, bzw. vielleicht hat aber jemand auch schon sowas/eine bessere Funktion!?

http://api.webfan.de/api-d/4/js-api/library.js
bzw.
https://github.com/frdl/-Flow/blob/master/api-d/4/js-api/library.js/core/plugin.core.js

Drucke diesen Beitrag

  EventEmitter.once is fired twice
Geschrieben von: Till - 22.08.2016, 21:08 - Forum: JavaScript / JavaScript Frameworks / Ajax - Antworten (1)

Hallo,
Auszug aus meinem EventEmitter:

Code:
EventEmitter.prototype.once = function (event, listener) {
    this.on(event, function g () {
        this.removeListener(event, g);
        listener.apply(this, arguments);
    });
  };

und app.js...
Code:
var BootConfigLoadEvent = new EventEmitter();
          
        
        BootConfigLoadEvent.once('bootconfig', function(){
               var c = arguments[0].config;
               var themes = frdl.SQL
                                .from(c.themes)
                                .where("$.enabled == true")
                                .toArray();
                               
               frdl.each(themes, function(i,theme){
                   $('div[data-webkit-mod="themes"]').append(
                      '<div data-frdl-component="'+theme.url+'"></div>'
                   );
               });      
               webfan.$Async(function(){  
                  gui.ready.emit('theme loaded', $scope);
               },1000);
               
             
              webfan.$Async(function(){          
               var components = frdl.SQL
                                .from(c.components)
                                .where("$.enabled == true")
                                .toArray();
                               
               frdl.each(components, function(i,component){
                   $('div[data-webkit-mod="components"]').append(
                      '<div data-frdl-component="'+component.url+'"></div>'
                   );
               });    
              },1);  
               
                 
             webfan.$Async(function(){          
               var desktopwidgets = frdl.SQL
                                .from(c.desktopwidgets)
                                .where("$.enabled == true")
                                .toArray();
                               
               frdl.each(desktopwidgets, function(i,component){
                   $('div[data-webkit-mod="components"]').append(
                      '<div data-frdl-desktop-widget="'+component.url+'"></div>'
                   );
               });  
              },1);  
               
                                         
       });

...und...
Code:
var b = function(){
            
                        BootConfigLoadEvent.emit('bootconfig', {
                            config : $scope.manifest,
                            time : new Date().getTime()
                        });    
                        
            b = function(){};
                                
        };

Die Funktion welche in .once oben deklariert ist wird mehr als einmal ausgeführt.
Wie kann das sein?
Ich "lösche" wie im Code zu sehen sogar den Wrapper b(), trotzdem wird das ganze mehrmals ausgeführt, nämlich immer dann wenn sich der state (angularJS ui.router) ändert (das ganze befindet sich in einer angular config function)!?

Drucke diesen Beitrag

Shocked Barrierefreiheit vs. Captcha
Geschrieben von: Till - 16.08.2016, 23:48 - Forum: Off Topic - Antworten (13)

Hallo,
habe mal eine Frage wie Ihr das seht?

Ist dieses Captcha (siehe Anhang) eine Überforderung?
Abgesehen davon das ich noch Audio für Blinde einführen MUß/sollte?

Ich frage deshalb, weil es schon von Spammern durchdrungen wurde ( so schwer ist es nun wirklich  nicht, damit habe ich gerechnet),  es ist nur so:
Ein(e) User(In) dachte sie müßte, bspw. im hier geposterten Captcha D5 eintippen.
Und sie ist eine von den netten Usern, welche mich auf Fehler hinweisen.

Leider habe ich am captcha seit dem noch nichts geändert.
Was das betrifft (usabillity) bin ich einfallslos!?
Wie sieht Euer Captcha aus?



Angehängte Dateien Thumbnail(s)
   
Drucke diesen Beitrag

  Kurzer Test (InnoSetup und mehr....)
Geschrieben von: Till - 31.07.2016, 20:10 - Forum: Off Topic - Antworten (14)

In einem anderen Forum habe ich gelesen das es möglich wäre mit InnoSetup einen Installer zu compilen welcher auch auf Mac und Linux läuft. Ich habe die Anweisungen aus dem Thread befolgt und suche nun Tester mit entsprechenden Systemen verfügbar welche bereit wären für einen kurzen Test. Es werden zunächst keine komplexeren Testberichte erwartet, für mich wäre schon ein einfaches "geht" oder "geht nicht" sehr hilfreich!

Obschon meine Anfrage sehr eigennützig ist, möchte ich auch meine Teamworkfähigkeit und Userorientiertheit verbessern und bin u.a. auch generell an gegenseitigem/ernsthafteren Austausch interessiert (auch mit generell am Thema Interessierten unabhängig deren Qualifikation)...

Da ich hier nicht unnötig Werbung machen will, Links und weiteres per Anfrage im Thread sofern forenkonform oder via PM...!?!

Zurück zum Thema:
Ich muß schon für jedes System jeweils einen eigenen Installer compilen (aufgrund er Anwendung), es geht mir nur darum ob ich Inno auch für Linux und mac verwenden kann.
Soweit ich weiß ist es in delphi geschrieben also windows orientiert?
Ich verwende nach den Anweisungen aus dem anderen Forum nicht den default compiler sondern ISCC.exe/wine.
Das entpacken kann ich mir ja noch plattformunabhängig vorstellen, ich habe aber keinen blaßen Schimmer von wegen Desktopicons und Registry Einträgen.
Konkret registriert meine App Protocolhandler in der registry unter windows.
Leider habe ich auch zu wenig Ahnung von den anderen Systemen...

Drucke diesen Beitrag

  Authentication, Authorization, Encryption
Geschrieben von: Till - 08.07.2016, 09:11 - Forum: Off Topic - Keine Antworten

Hallo,
ich möchte für eine LOKALE Anwendung einige Daten verschlüsseln.
Bzw. und/oder ein Adminlogin anbieten.
(So genau bin ich mir über alles noch nicht sicher, ich erwäge auch eine externe/online Anmeldung per OAuth in der App, das betrifft aber nur die Authentifizierung und würde eine Onlineverbindung vorraussetzen)

Mich würde Eure Gedanken dazu bzw. Eure Erfahrungen interessieren.
Die konkrete verwendete Verschlüsselung also der Algo ist erstmal zweitrangig, es geht mir zunächst um die Grundlagen.

Der Zweck soll sein, fremden Anwendungen/Benutzern den Zugriff auf die Benutzerdaten zu erschweren.

Meine bisherigen Gedanken dazu:
Wenn ich alle Daten mit dem AdminPWD verschlüssele, und der Admin/Anwender ändert das Passwort, so müßten alle Daten zunächst mit dem alten Passwort entschlüsselt und mit dem neuen wieder verschlüsselt werden.
Eher ungünstig?
Ein anderes Vorgehen wäre bei der Installation einen "Masterkey" zu erzeugen, mit diesem zu verschlüsseln und nur den Masterkey per Adminpasswort zu verschlüsseln.
Um das login zu überprüfen könnte ich einen Hash des masterkey speichern, wenn der Admin sein pwd eingibt, und der Hash stimmt überein, ist der Admin eingeloggt und der entschlüsselte Masterkey gültig/verwendbar.
Nachteil: Ist der Masterkey einmal bekannt bleibt auch nach PWD Änderung die Anwendung kompromitiert.

Noch ist es nicht ganz aktuell, mich würden aber schonmal Eure Gedanken und Erfahrungen dazu interessieren
...?

mfg

Drucke diesen Beitrag

  JSZip + node.js
Geschrieben von: Till - 15.06.2016, 09:12 - Forum: JavaScript / JavaScript Frameworks / Ajax - Antworten (1)

Hallo,
ich versuche mit JSZIp http://stuk.github.io/jszip/documentation/api_zipobject/node_stream.html
und node.js eine .zip Datei zu entpacken, aber ich kriegs irgendwie nicht hin?

Code:
console.log(data.length );   //44497577

                     zip.loadAsync(data,{optimizedBinaryString:true}).then(function(z){
                                console.dir(z);   //<- wird nicht aufgrufen, then geht nicht                         
                                                              //auch nicht optimizedBinaryString:false
                     });

        console.dir(zip.files);  //Object
        console.dir(zip.files.length);    //undefined

Die synchronen Methoden sind alle removed ebenso funktioniert asNodeBuffer() http://stackoverflow.com/questions/29038985/node-js-jszip-library-to-extract bei mir nicht.

Drucke diesen Beitrag

  Fußball-Tippspiel
Geschrieben von: mermshaus - 09.06.2016, 23:41 - Forum: Off Topic - Antworten (10)

Hallo!

Wenn spontan noch jemand Lust hat, beim schlechtesten Tippspiel zur Fußball-Europameisterschaft 2016 mitzumachen, bitte Antwort hier (mit gewünschtem Nutzernamen) oder PM an mich (mit Nutzernamen und optional Passwort).

- http://fuppes.ermshaus.org/ (Startseite)
- http://fuppes.ermshaus.org/league/8 (Seite zur EM)

Es gibt…

  • nichts zu gewinnen
  • keine automatische Funktion zum Erstellen eines Accounts (daher Antwort oder PM)
  • voraussichtlich nicht mehr als 4+ Mitspieler
  • keine sinnvolle Menüführung
  • Statistiken, die für Turniere keinen Sinn ergeben (Kreuztabelle)

Punktevergabe:

Richtiges Ergebnis: 4 Punkte (z. B. 2-1 bei einem Ergebnis von 2-1)
Tendenz und Torabstand: 3 Punkte (z. B. 1-0 bei einem Ergebnis von 2-1)
Tendenz: 2 Punkte (z. B. 2-0 bei einem Ergebnis von 2-1)

Ein Spiel kann jeweils bis zum Zeitpunkt des Anpfiffs getippt werden.

Wir haben damit in der Bundesligasaison 2011/12 mal aus Quatsch mit drei Leuten angefangen, und ich habe schließlich eine kleine Software geschrieben, um die Arbeit zu erleichtern. Die Software wurde im Laufe der Zeit rudimentär erweitert (und auch verkürzt). Wahrscheinlich veröffentliche ich sie irgendwann mal, auch wenn sie etwas peinlich ist.

Viele Grüße

Drucke diesen Beitrag