Zum Inhalt springen

xmurrix

Mitglieder
  • Gesamte Inhalte

    56
  • Benutzer seit

  • Letzter Besuch

Beiträge von xmurrix

  1. Hallo brabbelj,

    Hi,

    RewriteEngine On
    
    RewriteRule ^(.*)\.php$ index.php?page=$1
    die Regel, die du da definiert hast ("{irgendwas}.php"), wirkt sich auch auf die index.php aus, die sollte vom Umschreiben ausgeschlossen werden. Wenn du vor der RewriteRule die Zeile
    RewriteRule ^index.php.*$ - [L]
    angibst, sollte es klappen. Manchmal sind zusätzliche Requestparameter enthalten, wenn du z. B. die Parameter in der URL http://www.example.com/example.php?foo=bar auch auch mit übergeben willst, was auch Sinn macht, dann kannst du die Regel folgendermaßen definieren.
    RewriteRule ^(.*)\.php$ index.php?page=$1 [QSA,L]

    QSA = Hängt den Querystring an die umschriebene Seite, also an die index.php

    L = Sorgt dafür, dass keine weiteren Regeln verarbeitet werden, wenn die definierte Zutrifft. Das kann hilfreich sein, wenn du mehrere Regeln hast und mod rewrite aber nicht alle abarbeiten soll, sondern dort aufhört, wo die Regel zutrifft.

    Gruß

    xmurrix

  2. Hallo Seva,

    normalerweise kannst du mit Ecipse PDT sofort loslegen, nachdem du es heruntergeladen und in ein Verzeichnis entpackt hast.

    In der Regel hast du Rechtsoben die Liste der Ansichten (Perspectives), ist dort PHP nicht vorhanden, kannst es über das Icon "Open Perspective" einfügen.

    Ich bin mir jetzt nicht ganz sicher, in wieweit du das Konzept bei Eclipse kennst und mit welchen Editoren/IDEs du bisher Erfahrung gesammelt hast.

    Während in gewöhnlichen Editoren du einfach eine Datei öffnen und bearbeiten kannst, musst du hingegen in Eclipse erstmal ein Projekt anlegen. Das geht über das Menü "File -> New -> Project" bei PDT ist auch "File -> New -> PHP Project" dabei.

    Im nächsten Fenster gibst du dem Projekt einen Namen und definierts das Verzeichnis, in dem die Projektdateien abgelegt werden sollen. Du kannst auch ein vorhandes Verzeichnis mit Sourcen angeben (Create project from existing source).

    Als Einstieg in PDT kannst dir auch ein paar Tutorials reinziehen, z. B. die http://www.youtube.com/watch?v=VRFZpk-YHl4.

    Gruß

    xmurrix

  3. Hallo,

    a) Ist es denn WIRKLICH so, dass bei JEDEM Aufruf alle Scripte (auch alle Includes) komplett wieder neu geladen werden. Ich kann mir einfach nicht vorstellen, dass da keine Optimierungsroutinen (ggf. Apache Server) vorhanden sind. Ich als "normaler" Programmierer würde da was einbauen. Wer weiß etwas genaues, ggf. einen Link darüber?

    Es ist tatsächlich so, dass alle Scripte bei jedem Aufruf neu eingebunden werden. PHP ist eine reine Interpretersprache, d h. der Code wird jedes Mal eingelesen, analysiert und ausgeführt. Das mag auf den ersten Blick nicht performant sein, aber es gibt auch dafür Möglichkeiten durch Einsatz diverser Cache-Systeme (APC, eAccelerator, memcache usw.). Dabei werden die Sourcen auch vorkompiliert und im Speicher abgelegt.

    B) Wenn a) wahr ist, dann ist es doch "schwachsinnig" objektorientiert zu programmieren, bzw. Frameworks (wie Zend, Symfony oder CakePHP) zu verwenden, die ja intern "exzessiv" Reflection einsetzen, die ja bekanntlich auch "verdammt" teuer ist.

    Auch wenn PHP-Code nicht gecached wird, ist die OO-Programmierung trotzdem Sinnvoll. OOP muss ja nicht unbedingt den Compilersprachen vorenthalten sein. Natürlich leidet die Performance bei Einsatz von Frameworks, Abstraktion/Kapselung ist eigentlich immer mit Performanceverlust verbunden, dafür erhöht sich die Wartbarkeit der Scripte. Bei komplexen Projekten ist das bis zu einem gewissen Grad wichtiger als die Performanceeinbuße, der man mit Codeoptimierung, Caching oder Hardware entgegenwirken kann.

    c) kann man irgendwo (php.ini?) einstellen, dass Variablen deklariert (bzw. definiert) werden müssen, das ist ja total nervig, wenn man (wie bei JavaScript) "einfach so", wegen z.B. Schreibfehler, Variablen definiert.

    Der Fehlerlevel lässt sich in der php.ini einstellen, ist es auf E_STRICT gesetzt, wird einiges vom Interpreter bemängelt, auch der Zugriff auf Variablen, die vorher nicht initialisiert wurden. Eine explizite Deklaration einer Variablen wie in Java ist nicht möglich. Die Option sorgt E_STRICT dafür, dass z. B. $foo=1; echo $Foo; zur einer Fehlermeldung führt, sofern $Foo nicht schon vorher initialisiert wurde.

    d) Wer von euch kennt PDT (Eclipse) und wer kennt Zend Studio? Lohnt hier der Umstieg von PDT auf Zend Studio. Ist der Debugger mächtiger, bzw. kann ich während des debuggens (Haltepunkt) auch Functions/Methoden ausführen (wie ich es mit Java auch kann)

    PDT ist auf jeden Fall empfehlenswert, ob sich der Umstieg zu Zend Studio lohnt, hängt eher von den jeweiligen Anforderungen an die IDE ab. Unter Zend Studio - Versionsvergleich - Zend.com gibt es einen Vergleich von beiden Entwicklungsumgebungen. Nach der Installation von manchen Plugins (Subclipse, Aptana) stehen einige Funktionalitäten auch unter PDT zur Verfügung. Meines Wissesns ist das Debuggen unter Zend Studio besser. Ob damit an Haltepunkten das Ausführen von Functions/Methoden möglich sind, kann ich dir nicht sagen.

    e) Ich verstehe das Prinzip der static Methoden nicht, denn wenn a) wahr ist, was nützt mir dann eine static-Methode oder ggf. Singletons, wenn das Script sowieso wieder neu geladen wird. Bei Java und C# ist es ja so, dass nach der ersten Initialisierung das "Teil" im Speicher ist, bis die Anwendung beendet wird, oder der Server runtergefahren wird. Wer kann mich hier aufklären?

    Static Methoden/Eigenschaften sind ja dafür gedacht, um diese auch ohne vorherige Instanzierung der Klasse verwenden zu können. Auch wenn die Scripte jedes mal neu geladen werden, kann man mit PHP die Vorteile von statischen Methoden/Eigenschaften verwenden. Das Singleton Pattern wird dort eingesetzt, wenn z. B. eine Instanz eines Objektes nur einmal pro Scriptaufruf erstellt werden soll. Bei komplexen Projekten kommt es schon mal vor, das sehr viele Sourcen includiert werden und wenn eine DB-Connection dann an 10 verschiedenen Stellen nötig ist, wird durch Einsatz von Singleton, das Objekt nur einmal Instanziert, also eine Verbindung aufgebaut.

    Auch wenn in Java oder C# die Sourcen vorkompiliert werden, werden alle benötigen Objekte bei jedem Aufruf unter Java und C# genauso neu erstellt. Das Speichern von Objekten (inkl. aktuellem Zustand) ist wie in Java oder C# auch in PHP möglich.

    Es sind doch einige Unterschiede zwischen PHP und Java oder C#, dennoch kann man mit PHP mittlerweile einiges anstellen - wünsche dir auf jeden Fall viel Spass damit.

    Gruß

    xmurrix

  4. Überprüfe doch mal in der php.ini die Werte für session.save_handler, session.save_path und session.use_cookies.

    Folgende Einstellungen sollten drin stehen:


    session.save_handler = "files"

    ; kann auch ein anderer ordner sein (hier braucht php schreibrechte)
    session.save_path = "C:\\WINDOWS\\Temp"

    ; sonst wird die sessionid nicht mit dem cookie übertragen.
    session.use_cookies = 1
    [/PHP]

    Gruß

    xmurrix

  5. Hallo,

    du kannst auch das onScroll-Event per JavaScript hinzufügen, also ohne es als Attrubut im body-Tag anzugeben.

    
    ...
    
        <script type="text/javascript"><!-- // <![CDATA[
    
        function onScroll(){
    
            //todo on scroll event
    
        }
    
    
        // add onscroll-event
    
        if (window.addEventListener) {
    
            window.addEventListener("scroll", onScroll, false);
    
        } else if (window.attachEvent){
    
            window.attachEvent("onscroll", onScroll);
    
        }
    
        //]]> --></script>
    
    ...
    
    

    Das ist auch XHTML-Strict. Per CSS wäre es eleganter, aber da du ja sowieso JavaScript verwendest, spielt es keine Rolle...

    Gruß

    xmurrix

  6. Die JavaScript-Funktion, die auf den Body-Tag zugreift, sollte nicht im Head sein, da das Script beim Client dann ausgeführt wird, bevor das Body Element beginnt.

    Also falls im Head, dann beim onload-Event, z. B.:

    
    <script type="text/javascript"><!--
    
    	function changeBody(){
    
    		alert(document.body.style.width);
    
    		document.body.style.width = "100px";
    
    		alert(document.body.style.width);
    
    	}
    
    
    	onload = changeBody;
    
    // --></script>
    
    
    oder nach dem öffnen des Body-Tags:
    
    <body>
    
    <script type="text/javascript"><!--
    
    	alert(document.body.style.width);
    
    	document.body.style.width = "100px";
    
    	alert(document.body.style.width);
    
    // --></script>
    
    

    Gruß

    xmurrix

  7. Hallo,

    solche Probleme hatte ich auch schon mal. Anscheinend gibt es ab und an unter bestimmten Konstellationen von Apache und PHP irgendwelche Konflikte.

    Genaueres kann ich da nichts sagen, aber bei mir hat dann die Installation einer anderen Version (sei es Apache oder PHP) geholfen.

    Vielleicht hilft eine Recherche über bekannte Bugs in den verwendeten Versionen die weiter und du kannst das Problem eingrenzen oder du installierst jeweils die neuesten Versionen.

    Gruß

    xmurrix

  8. Hallo,

    der horizontale Scrollbalken wird eigentlich nur vom IE angezeigt, weil dieser von einer 100% Breite ausgeht. Ist der Inhalt länger als, die vorhandene Höhe, wird die Breite des entstehenden vertikalen Scrollbalkens zur der Breite hinzugerechnet und somit ist der Inhalt breiter als 100%.

    Wenn du das umgehen möchtest, kannst du in der CSS die Breite vom body-Tag auf z. B. auf 95% setzen, oder du gibst eine feste Breite in Pixel ein (definierte breite - breite des scrollbalkens).

    Beim Weglassen der Doctype-Angabe XHTML-Transitional, läuft der IE im Quirks-Modus und zeigt keinen horizontale Scrollbalken, aber das ist wohl nicht im Sinne von validem HTML-Code.

    Gruß

    xmurrix

  9. Hallo zusammen.

    Ich habe schon hier, bei ActiveVB und bei google gesucht, aber immer ohne Erfolg. Entweder gibt das Script wirre Zeichenfolgen ein, bzw sind die Beispiele und Scripte nur für .NET.

    Hat jemand ein Script für VB6, dass gültige md5sum erstellt und die ich dann per PHP vertifizieren kann ( md5($string); )

    Hallo burnersk,

    hast du schon die VB-Implementationen unter http://userpages.umbc.edu/~mabzug1/cs/md5/md5.html ausprobiert?

    Gruß

    xmurrix

  10. In allen if()-Aweisungen überprüfst du auf Werte von $_FILES, also wird die SQL-Anweisung nie vollständig und halb fertig an die DB geschickt das solltest du mit $_REQUEST machen, also


    if(!empty($_REQUEST['Name']))
    {
    $insert_sql.=", Name='".mysql_escape_string($_REQUEST['Name'])."'";
    //$insert_sql.="', Name='".htmlentities($_REQUEST['Name'], ENT_NOQUOTES);
    }
    [/PHP]

    Außerdem solltest du einen Schalter einbauen, der auf True gesetzt wird, wenn mindesten ein Feld korrekte Daten hat. Ansonsten hast du wieder ein unvollständiges Statement, wenn der User nichts eingibt und das Formular abschickt.

  11. Wie jetzt? Ihr wollt nicht ernsthaft versuchen .DS_Store Dateien in Windows-Fonts umzuwandeln.

    Nein, nein :D

    Möchte nur eine Antwort darauf, wie man Mac Fonts in Windows Fonts umwandeln kann, und zwar mit einer anderen Software als TransType.

    Diese Mac .DS_Store Ordner-Infos meine ich nicht, wurde wohl falsch verstanden.

  12. Hallo,

    man kann eine eigene Session-Verwaltung programmieren (z. B. DB basierend). Ist natürlich sehr zeitaufwändig.

    Eine andere Möglichkeit ist z. B. in einem vesteckten I-Frame die Seite mit JavaScript alle 5 Minuten neu zu laden. Geht natürlich nur wenn JavaScript aktiviert ist, ist aber die einfachste Art, die Session beizubehalten, ohne die php.ini ändern zu müssen.

    Noch einfacher ist es mit ini_set(), wenn der Provider die Funktion ini_set() aus Sicherheitsgründen nicht gesperrt hat.

    Gruß

    xmurrix

  13. Also,

    so ist's auf jeden Fall nicht richtig (nicht valides HTML/XHTML), eher folgendermaßen:

    CSS:

    div#Menu .indented{margin-left:3em;}
    HTML:
    
    <div id="Menu">
    
    <ul>
    
    	<li><a href="./index.html">Home & News</a></li>
    
    	<li><a href="ftp://mychrisoft.game-host.org/">Downloads</a></li>
    
    	<li><a href="./tcl-projects.html">Tcl Projekte</a></li>
    
    	<li>
    
    		<ul class="indented">
    
    			<li><a href="./tcl-projects.html">4 Gewinnt</a></li>
    
    			<li><a href="./tcl-projects.html">Chess</a></li>
    
    			<li><a href="./tcl-projects.html">Screen</a></li>
    
    			<li>
    
    				<ul class="indented">
    
    					<li><a href="./tcl-projects.html">4 Gewinnt</a></li>
    
    					<li><a href="./tcl-projects.html">Chess</a></li>
    
    					<li>
    
    						<ul class="indented">
    
    							<li><a href="./tcl-projects.html">4 Gewinnt</a></li>
    
    							<li><a href="./tcl-projects.html">Chess</a></li>
    
    							<li><a href="./tcl-projects.html">Screen</a></li>
    
    							<li><a href="./tcl-projects.html">Tetris</a></li>
    
    							<li><a href="./tcl-projects.html">Space</a></li>
    
    						</ul>
    
    					</li>
    
    					<li><a href="./tcl-projects.html">Screen</a></li>
    
    					<li><a href="./tcl-projects.html">Tetris</a></li>
    
    					<li><a href="./tcl-projects.html">Space</a></li>
    
    				</ul>
    
    			</li>
    
    			<li><a href="./tcl-projects.html">Tetris</a></li>
    
    			<li><a href="./tcl-projects.html">Space</a></li>
    
    		</ul>
    
    	</li>
    
    	<li><a href="/phpMyAdmin/index.php">phpMyAdmin</a></li>
    
    </ul>
    
    </div>
    
    

  14. Hallo CHris08156,

    ein Untermenü sollte innerhalb eines Listenelementes (<li>) untergebracht sein, und auch am besten als eine neue Liste, also:

    
    <div id="Menu">
    
    <ul>
    
    	<li><a href="./index.html">Home & News</a></li>
    
    	<li><a href="ftp://mychrisoft.game-host.org/">Downloads</a></li>
    
    	<li><a href="./tcl-projects.html">Tcl Projekte</a></li>
    
    	<li>
    
    		<ul>
    
    			<li><a href="./tcl-projects.html">4 Gewinnt</a></li>
    
    			<li><a href="./tcl-projects.html">Chess</a></li>
    
    			<li><a href="./tcl-projects.html">Screen</a></li>
    
    			<li><a href="./tcl-projects.html">Tetris</a></li>
    
    			<li><a href="./tcl-projects.html">Space</a></li>
    
    		</ul>
    
    	</li>
    
    	<li><a href="/phpMyAdmin/index.php">phpMyAdmin</a></li>
    
    </ul>
    
    </div>
    
    

    Gruß,

    xmurrix

  15. Hallo,

    mit dem Network-Objekt kannst du untrer anderem den Rechnernamen auslesen - Beispiel:

    
    Dim oWshNw
    
    Dim sComputerName
    
    Set oWshNw = WScript.CreateObject("WScript.Network")
    
    sComputerName = oWshNw.ComputerName
    
    WScript.Echo sComputerName
    
    

    Gruß

    xmurrix

  16. Hallo,

    über das target-Attribut kann nur die Bezeichnung für das Ziel-Fenster angegeben werden. Mit reinem HTML lässt sich die Größe eines zu öffnenden Fensters nicht bestimmen.

    Beispiel, mit dem sich ein Fenster mit oder ohne JS öffnen lässt:

    
    <script type="text/javascript"><!--
    
    	function openNewWin(url, name){
    
    		window.open(url, name, 'width=800,height=600');
    
    	}
    
    // --></script>
    
    <a href="http://forum.fachinformatiker.de/showthread.php?t=80632" 
    
       target="newWin" 
    
       onclick="openNewWin('http://forum.fachinformatiker.de/', 'newWin'); return false;"
    
       title="fachinformatiker.de oeffnen"
    
    >fachinformatiker.de oeffnen</a>
    
    

    Unabhängig davon, wird die Seite trotzden nicht angezeigt, wenn ein User Popup-Blocker verwendet und diesen restriktiv konfiguriert hat.

    Gruß

    xmurrix

  17. Hallo,

    wenn Du über LWP::UserAgent eine Anfrage an einen Server schickst, wird per Default 'libwww-perl/xxx' im Header der Anfrage verschickt. Viele Server sind so konfiguriert, dass Anfragen auf Ressourcen von bestimmten UserAgents gesperrt sind.

    Ersezte einfach den Standard LWP::UserAgent String gegen einen anderen z. B. 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.8) Gecko/20050511 Firefox/1.0.4'.

    
    $uastr = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.8) Gecko/20050511 Firefox/1.0.4';
    
    $ua->agent($uastr);
    
    $response = $ua->request($request, $file);
    
    

    Gruß

    xmurrix

  18. Hallo,

    ich denke, es liegt an der Zeile:

    
    $tn->waitfor('/Password[: ]*$/');
    
    

    Die Methode waitfor sucht nach dem Ausdruck '/Password[: ]*$/' aus dem Stream. Soweit ich weis, sollte der Anfangsbuchstabe klein geschrieben sein, also '/password[: ]*$/'.

    Sehr wahrscheinlich liegt es daran, dass '/Password[: ]*$/' nicht gefunden wird, und Telnet läuft dann in den Timeout.

    Gruß

    xmurrix

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...