Content nach x Sekunden laden ?!

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Cubbi, 13. November 2007 .

  1. 13. November 2007
    Hallo, hab mal eine Frage und zwar habe ich vor mittels eines Scripts den unwichtigen Inhalt meiner Seite erst nach x Sekunden zu laden (Content wird mittels php (wordpress) aus einer datenbank ausgelesen).

    Nun habe ich zwei Fragen:

    1) PHP Scipt oder Javascript, was eigent sich für sowas besser / was ist sauberer ?
    2) Kennt vielleicht jemand so ein Script oder weiß, wonach ich Googlen muss / wo ich eins finden kann.

    Bewertung ist Ehrensache , bin über jede Antwort dankbar !
     
  2. 13. November 2007
    AW: Content nach x Sekunden laden ?!

    PHP selber bietet die sleep()-Funktion an
    PHP: sleep - Manual

    Bei JavaScript besteht eben die Gefahr, dass der Nutzer das deaktiviert.
     
  3. 13. November 2007
    AW: Content nach x Sekunden laden ?!

    Problematisch ist bei sleep nur, dass dann die gesamte Ausführung des Scripts für x Sekunden einschläft, er erreicht damit auf jeden Fall nicht den gewünschten Effekt. Ich würde es mit AJAX realisieren, der unwichtige Content wird per XMLHTTP-Request an einen Loader übergeben der diesen dann läd. Hier solltest du dann einfach den Request mit window.setTimeout() verzögern. Funktioniert natürlich nur bei eingeschaltetem Javascript, du solltest das also nur für unwichtigen Content verwenden oder eine Alternative bieten.
     
  4. 13. November 2007
    AW: Content nach x Sekunden laden ?!

    Edit: thx matzee, da hab ich wohl zu langsam gepostet

    Bin allerdings leider nicht der große Javaexperte... Gibts dafür vielleicht ein Beispielscript ? Weil ich weiß leider nicht, wo dann der zu ladende Inhalt "hinein kommt" (<?php the_unwichtig('[...]'); ?>) ?(

    Alter post:

    danke für die Antwort, bw haste, habe das jetzt so eingebunden:

    Code:
    <?php if (function_exists('ls_getinfo')) : ?><?php if (ls_getinfo('isref')) : ?>
    <?php 
    // 10 Sekunden schlafen
    sleep(10);
    // aufwachen!
    the_unwichtig('[...]');
    ?>
    <?php else : ?>
    <?php the_unwichtig('[...]'); ?>
    <?php endif; ?><?php endif; ?
    (Is_getinfo überprüft, ob der Besucher von Google kommt)

    Jetzt wird die komplette Seite allerdings erst nach 10 Sekunden geladen... :-(

    (habe das ganze Script auch einmal in eine andere PHP-Datei ausgelagert, leider mit dem selben Ergebnis...)

    Mach ich da etwas falsch oder ist das Script vllt dafür nicht geeigent? ?(
     
  5. 13. November 2007
    AW: Content nach x Sekunden laden ?!

    sleep() verzögert die komplette Programmausführung.
    Entweder so oder mittels Ajax, allerdings funktioniert dieses wiederrum nur dann, wenn der Benutzer JavaScript aktiviert hat.
    Allerdings im Zeitalter von Web 2.0 sollte der Großteil JavaScript aktiviert haben.
     
  6. 13. November 2007
    AW: Content nach x Sekunden laden ?!

    Wenn du willst kann ich dir ein Beispiel basteln?
     
  7. 13. November 2007
    AW: Content nach x Sekunden laden ?!

    Wenn du das machen könntest, wäre ich dir sehr dankbar ;-)
     
  8. 13. November 2007
    AW: Content nach x Sekunden laden ?!

    http://rapidshare.com/files/69504172/loading.rar.html

    Bitte sehr. Noch was zur Funktionsweise: im <body onload=""> wird der request abgeschickt. Dieser wird an den loader weitergeleitet und dieser includiert die entsprchende Content-Datei. Dieser Umweg hat folgende Vorteile: du kannst die übergebenen Variablen überprüfen! Habe ich nicht drin, aber so ist das Script viel zu unsicher als das man es nutzen könnte! Weiterhin kann man wichtige includes einbinden, da bei einem AJAX-Request zum Beispiel eine in der index.php-Datei aufgebaute DB-Verbindung NICHT mehr offen ist.

    Wie du siehst habe ich in die Datei "content.php" einen sleep(3); eingebaut, das Script stoppt also 3 Sekunden. Ich würde das aber rauslassen, da der unwichtige Content eh im Hintergrund lädt und es somit unnötig ist den Benutzer x Sekunden warten zu lassen.

    Falls es Fragen gibt einfach hier in den Topic, BW wäre auch nett ;D
     
  9. 13. November 2007
    AW: Content nach x Sekunden laden ?!

    Danke für das Scipt, das ist genial Eine Frage habe ich auch gleich (Weniger zum Codeverständnis, der ist ja gut erklärt, aber viel mehr zur Sicherheit), und zwar schreibst du ja
    . Jetzt wollte ich fragen, wo eventuelle Sicherheitslücken liegen bzw. was genau passieren kann ?!

    Viele Grüße
    Cubbi
     
  10. 13. November 2007
    AW: Content nach x Sekunden laden ?!

    Problematisch ist, dass man auch einfach loader.php?load=http://www.domain.de/evil.php schreiben kann. Falls allow_url_fopen aktiviert ist, wird nun evil.php in dein Script geladen, sprich das Script kann eine Datenbankverbindung herstellen, Dateien herunterladen und ändern, löschen usw. Sicherer ist es, wenn du das ganze so löst:

    loader.php
    PHP:
    <? php
    if (isset( $_GET [ 'load' ])) {
        
    $load  $_GET [ 'load' ];
    } else {
        
    $load  false ;
    }

    if (
    $load  ==  'content.php' ) {
        include 
    'content.php' ;
    }
    ?>
    So kann man ?load= nicht mehr manipulieren.

    //Edit: ist natürlich etwas umständlicher, da du für jede Datei immer wieder ein if-Statement brauchst. Ist aber absolut sicher. Alternativ kannst du $load auch auf verdächtige Zeichen wie '/', '../', usw filtern.
     
  11. 13. November 2007
    AW: Content nach x Sekunden laden ?!

    Also standalone funktioniert das Script prima, nochmal vielen Dank , habe beim einbinden natürlich gleich mal die index.php der "echten" Website überschrieben :-( (hatte aber zum Glück noch ein Backup), naja auf jeden fall wird das Script bei mir noch nicht geladen, habe folgenden Code verwendet:

    Im Head Bereich (ist nicht sauber, müsste aber klappen )
    HTML:
    <?php if (function_exists('ls_getinfo')) : ?><?php if (ls_getinfo('isref')) : ?>
    <script type="text/javascript" src="ajax.js"></script>
    <?php else : ?><?php endif; ?><?php endif; ?>
    Body Tag
    HTML:
    <?php if (function_exists('ls_getinfo')) : ?><?php if (ls_getinfo('isref')) : ?><body onload="sendRequest('content2', 'loader.php', 'load=content.php');"><?php else : ?>
    <body><?php endif; ?><?php endif; ?>
    unterm content bereich: (test wird angezeigt)
    HTML:
    <?php if (function_exists('ls_getinfo')) : ?><?php if (ls_getinfo('isref')) : ?><div id="content2"></div><p>Test</p><?php else : ?><?php the_content('[...]'); ?>
    <?php endif; ?><?php endif; ?>
    Content.php (hiervon wird nichts angezeigt)
    HTML:
    <?php sleep(3); ?>
    <p>blabla</p>
    <?php the_unwichtig('[...]'); ?>
    
    Achja:
    Die ganzen Dateien des Themes sind in einem Unterordner (\files\theme\name)
    habe die Dateien einfach mal sowhl in den root als auch in den themeordner kopiert [bin wie gesagt momentan nicht so ganz auf der Höhe =) ], hat auf jeden Fall beides net geklappt...

    Falls jemandem jetzt schon etwas auffällt, bitte posten, werde mir das ganze morgen auch nochmal genauer anschauen, vielleicht bin ich auch heute einfach zu müde, um nen halbwegs lauffähiges Scipt auf die Beine zu stellen

    nachtrag: Die entsprechenden Codes werden angezeigt [javascript, bodytag etc.] und es wird kurz das "Ladebild" geladen, der Content aus der content.php erscheint aber leider nicht...
     
  12. 13. November 2007
    AW: Content nach x Sekunden laden ?!

    mit sleep lässt du das script einfrieren, da kommt nix zum browser.

    <?php
    print '123';
    sleep(10);
    print '456';
    ?>

    gibt nach 10 sekunden 123456 aus.

    benutz [g]javascript setTimeout[/g]
     
  13. 14. November 2007
    AW: Content nach x Sekunden laden ?!

    im Punkto sicherheit kann man das auch leichter überprüfen als immer ne if zu machen.
    Ich mache das immer so.

    PHP:
    $allowed_pages [] =  "home" ;
    $allowed_pages [] =  "files" ;
    $allowed_pages [] =  "messages" ;
    $allowed_pages [] =  "pages" ;
    $allowed_pages [] =  "chat" ;
    $allowed_pages [] =  "configs" ;
    $allowed_pages [] =  "forum" ;
              
    if (
    in_array ( $_GET [ 'page' ],  $allowed_pages )) {          
      include(
    "pages/" . $_GET [ 'page' ]. ".php" );
    }
    So muss man für eine neue Page nur eben ein
    PHP:
    $allowed_pages [] =  "xy" ;
    einfügen.


    Mfg Smooky
     
  14. 14. November 2007
    AW: Content nach x Sekunden laden ?!

    Du könntest es auch einfach direkt mit ausgeben lassen, allerdings in einem bestimmten Element (z.B. div).

    Dann versteckst du den Inhalt des Elements mit Javascript (Stichtwort display:none) und lässt ihn nach X-Sekunden wieder einblenden.

    Vorteil dieser Methode: Selbst Leute ohne JavaScript bekommen den Inhalt zu sehen, zwar ohne verzögerung aber er kommt (also auch für google..) und das Sicherheitsrisiko dürfte eliminiert sein.
     
  15. 14. November 2007
    AW: Content nach x Sekunden laden ?!

    Habe das Scipt mit Wordpress leider immer noch nicht zum laufen gebracht [habe jetzt extra einen Klon der Seite auf eine Subdomain gelegt, bin da gerade am Fehlersuchen ], standalone funktioniert es aber wie gesagt spitze !

    @Murdoc: Habe das ganze mal entfernt, sollte aber theoretisch egal sein, da ja schon das Javascript nicht zu laden scheint ?!

    @Smooky: Danke für das Script, werde allerdings erstmal matzees 2. Script verwenden, da ich momentan nur eine Content.php laden muss. Habe das Scipt aber an anderer Stelle eingebaut ;-)

    @bene600: Werde das warscheinlich erstmal so machen, bis ich den Fehler gefunden habe, weil vor allem dieser "Ladekreis" gefällt mir an matzees Lösung ziemlich gut :-D

    Bewertung habt ihr alle

    Nachtrag: Verwende momentan das Scipt hier

    Nachtrag 2: Habe den fehler gefunden, Script lädt jetzt, klappt alles prima, allerdings wird der excerpt noch nicht angezeigt (eingebunden mit the_excerpt() ), aber bin dem Problem auf der Spur :-D
     
  16. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.