php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack (1) Themen-Optionen Bewertung: Bewertung: 13 Stimmen, 5,00 durchschnittlich.
  #76 (permalink)  
Alt 16-06-2013, 01:30
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Damit meinte ich nicht, dass Du noch nicht weiter als bei "Hallo Welt" bist, sondern mehr den Unterschied. Funktionen benötigst Du eher, allein schon um Wiederholungen zu vermeiden. Ohne geht es halt auch, in dem man Zeile um Zeile jeden Arbeitsschritt notiert. Mit Funktionen wird es einfacher und kürzer.

Ohne Klassen geht es auch, so lange Du nur für Dich schreibst, brauchst Du nicht unbedingt Klassen, zumal der Code ohne Klassen häufig kürzer und übersichtlicher ist. Wenn Du aber mit anderen Programmierern zusammen an einer professionellen Anwendung arbeiten möchtest, wird es ohne OOP nicht mehr abgehen.
Mit Zitat antworten
  #77 (permalink)  
Alt 16-06-2013, 19:47
newbie1955
 Registrierter Benutzer
Links : Onlinestatus : newbie1955 ist offline
Registriert seit: Dec 2012
Beiträge: 241
newbie1955 befindet sich auf einem aufstrebenden Ast
Standard Noch ne Frage

es läuft soweit alles ganz gut, allerdings habe ich gerade den Fall, dass der FAZ-Politik feed nicht erreichbar ist. Da hattest Du doch eine Fehlermeldung eingebaut, die kommt aber nicht. Hast Du eine Idee, woran das liegen könnte? Der feed heißt:

http://www.faz.net/rss/aktuell/politik/

und kam bisher ohnehin sehr unzuverlässig. Im Moment stehen drei Meldungen drin, aber einen Fehler im Quelltext erkenne ich nicht.

Gruß
newbie1955

Geändert von newbie1955 (16-06-2013 um 19:49 Uhr)
Mit Zitat antworten
  #78 (permalink)  
Alt 16-06-2013, 21:58
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Bei mir ist der erreichbar, nur so etwas schafft der nicht anzuzeigen, da kommen nach wie vor nur Error-Mitteilungen, an den beiden BEL Steuerzeichen hängt der sich wohl auf. Die werden hier nicht sichtbar, deshalb habe ich an den Stellen [BEL] eingefügt.

Code:
<description>... border="0" title="„100% sozial“: Die ..." alt="„100% sozial“: Die ... m Zusammen[BEL]gehen  [BEL]soziale ...
Man kann ja nicht für jeden unvorhersehbaren Mist eine Ausnahme schreiben. Man könnte schon, doch der Aufwand rechnet sich ja nicht. Wer kommt denn auf so eine Idee da so etwas in Alt-Attribute zu stecken und ein Stück weiter noch BEL-Steuerzeichen einzufügen?

Es tut nicht notwendig, hier jeden Schrottfeed besprechen zu wollen.
Mit Zitat antworten
  #79 (permalink)  
Alt 16-06-2013, 22:04
newbie1955
 Registrierter Benutzer
Links : Onlinestatus : newbie1955 ist offline
Registriert seit: Dec 2012
Beiträge: 241
newbie1955 befindet sich auf einem aufstrebenden Ast
Standard Nein,

ich will hier auch nicht jeden Schrottfeed besprechen, wollte nur wissen, warum dann die Fehlermeldung, die Du ja eingebaut hast, nicht kommt. Bricht der dann einfach ab? EIgentlich müsste die Funktion doch bis an die Stelle kommen, wo sie merkt, dass da kein Inhalt gelesen wurde...

Ich muss Dich auch noch mit einer zweiten Sache nerven, die links zum Spiegel funktionieren nicht mehr. In denen kommt ein "#" vor, das anscheinend entfernt wird.

ist das an dieser Stelle im Code? (ich habe bisher nur preg_replace, aber nix mit callback verwendet):

PHP-Code:
daten preg_replace_callback("/(&[#a-z0-9]+;)/"

Geändert von newbie1955 (16-06-2013 um 22:24 Uhr)
Mit Zitat antworten
  #80 (permalink)  
Alt 17-06-2013, 06:14
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Bei mir wird der Spiegel ausgegeben, ein # kann vorkommen und wegen unerlaubten Steuerzeichen wie beim anderen Feed wurden schon Webseiten von Virenscannern gesperrt oder von der Google-Suche als gefährlich eingestuft und mit Warnhinweisen versehen. Sei zufrieden, wenn es bei denen noch nicht so ist, auch wenn da Steuerzeichen wie BEL eingebaut wurden, welche ein hörbares Signal erzeugen sollen, wenn ein Dokument an den Drucker gesendet wird.

Wenn ein Feed nicht geladen werden kann, so wird nach wie vor ein eigener Hinweis vom Script ausgegeben. Habe es extra gestern noch einmal getestet, in dem ich eine URL falsch eingab. Keine Fehlermeldung wird eventuell ausgegeben, wenn nur der Header vom Feed geladen werden kann oder so, weil der Rest Schrott ist.

Und wenn dann bei error_reporting(0) statt error_reporting(E_ALL) verwendet wird, dann bleibt das Dokument leer. Aber Du kannst über den Else-Zweig noch die eine oder andere eigene Fehlermitteilungen hinzufügen oder ergänzen, daran hindert Dich ja keiner. Da werde ich bei meinen auch noch eine ergänzen, ist wohl angebracht.

PHP-Code:
        } else { echo "<br>Mehrere Titel oder Items scheinen fehlerhaft zu sein.\n";
        }
    } else { echo 
"<br>Feed konnte nicht geladen werden!\n";
    }

So langsam aber sicher habe ich die Nase jedoch gestrichen voll. Ist ja nicht mit einer Zeile erledigt, ich muss ja immer die Zip-Archive erneuern und habe schon die Dateien von den Archiven verwechselt oder eigene Notizen mit Pfadangaben von Lokalhost vergessen zu entfernen, die niemand sehen soll, also auch immer wieder einen Testdownload mit Nachkontrolle durchführen. Und alles für ein Script ohne finanziellen Nutzen. Eventuelle um ein wenig den Bekanntheitsgrad zu steigern, doch dafür müsste man es auch noch für die gängigsten CMS aufbereiten.
Wie man zum Beispiel bei WordPress einfaches Script als Plugin einbindet, das weiß ich zwar, doch wenn es etwas komplexer wird, müsste ich es auch erst wieder testen. Schon würde wieder das nächste Buch fällig, denn nur mit den Anleitungen aus dem Web wird es wohl nicht getan sein. So ist das halt.

Geändert von Melewo (17-06-2013 um 07:08 Uhr)
Mit Zitat antworten
  #81 (permalink)  
Alt 17-06-2013, 10:22
newbie1955
 Registrierter Benutzer
Links : Onlinestatus : newbie1955 ist offline
Registriert seit: Dec 2012
Beiträge: 241
newbie1955 befindet sich auf einem aufstrebenden Ast
Standard Spiegel

Das ist ein Missverständnis. Bei mir ist der Spiegel auch als feed erreichbar, aber wenn ich dann auf die einzelnen ausgegebenen Links gehe, wird die Seite beim Spiegel nicht gefunden, weil bei meiner Ausgabe ein # entfernt wurde, das im Original aber steht. Also muss es ja vor der Ausgabe durch irgendwas entfernt werden (filterelinks?).

Ich verstehe, dass Dich die viele Arbeit mit dem Script nervt. Leider verdiene ich mit meiner Seite auch keinen cent, sonst würde ich Dir ja was abgeben.

Gruß newbie1955
Mit Zitat antworten
  #82 (permalink)  
Alt 17-06-2013, 12:20
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Ja, sehe ich jetzt auch. Doch eine Raute oder Hash # leitet eigentlich nur einen Anker innerhalb eines Dokuments ein

HTML-Code:
<a href="#springe_zu-Absatz_zwei">Absatz 2</a>
und die Seite sollte dennoch erreichbar sein, gleich ob so oder so.

HTML-Code:
"http://...wissen-vor-a-906066.html#ref=rss"
"http://...wissen-vor-a-906066.html"
Was durch die Filterung passiert, das ist jedoch, dass nur # entfernt wird und der Rest bleibt und ein Dokument mit der Endung htmlref=rss nicht existiert. Doch wenn Du das einfach nur in der Zeichenklasse mit hinzufügst,

Code:
[^a-z0-9_\/=.:;&#?-]
und zusätzlich noch htmlspecialchars vergessen würdest, dann würde auch so etwas durchgehen:

PHP-Code:
echo "&#x3c;&#x53;&#x63;&#x68;&#x61;&#x64;&#x63;&#x6f;&#x64;&#x65;&#x3e;";

// <Schadcode> 
Dann brauchte bald mal gar nichts mehr gefiltert werden. Wenn, dann solltest Du Dir da noch einen zweiten Ausdruck entwickeln, der mit der # auch den nachfolgenden Rest entfernt, jedoch auch nicht mehr als halt diesen Rest entfernt.

So und bevor Du dumm stirbst, solltest Du Dir unbedingt Punkt zwei aufklappen und durchlesen:

Zitat:
Dies geschieht aus zwei Gründen:
Hash-Fragmente werden niemals als Teil einer HTML-Anfrage an den Server gesendet.
AJAX-Crawling: Leitfaden für Webmaster und Entwickler - Webmaster-Tools-Hilfe

Also #ref=rss kommt beim Server vom Spiegel eh nicht an.

HTML-Code:
http://example.com/seite.html#Hash-Fragment
#Hash-Fragment - weg damit und gut sollte es sein.

Wo ich nun bei meinen Listing schon am Nachbessern bin:

PHP-Code:
function filtereLinks($daten) {

    if ((
$pos strpos($daten"#")) !== false) {
        
$daten substr($daten0$pos);
    }    
    
$daten preg_replace("/[^a-z0-9_\/=.:;&?-]/is"""$daten);
    return 
$daten;

Damit geht es aber auch:

PHP-Code:
echo '<a href="%3c%53%63%68%61%64%63%6f%64%65%3e">lesen</a>'
Und das solltest Du unbedingt einmal ausprobieren in einer kleinen Datei. Es passiert nichts gefährliches, nur ein Demo für ein kleines JavaScript alert, wie schnell sich eine Seite verseuchen lässt:

PHP-Code:
<?php

  
echo  "\x3C\x73\x63\x72\x69\x70\x74\x20\x74\x79\x70\x65\x3D\x22\x74\x65".
        
"\x78\x74\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x22\x3E\x61".
        
"\x6C\x65\x72\x74\x28\x22\x53\x63\x68\x61\x64\x63\x6F\x64\x65\x22".
        
"\x29\x3B\x3C\x2F\x73\x63\x72\x69\x70\x74\x3E";
?>
Und dann weißt Du, warum # und \ und % im Allgemeinen nichts in einer Zeichenklasse für Filter verloren haben und \ nur zum maskieren von anderen Zeichen verwendet werden sollte.

Nach den Browsern und Anbietern brauchst Du Dich nicht zu richten, es ist ja nicht deren System, welches verseucht werden könnte, es ist ja Dein System oder das System der Besucher Deiner Webseite und die werden sich nicht bei Dir bedanken, wenn sie wegen einer unsicheren Webseite ihren eigenen Computer neu aufsetzen mussten.

Nun gut, mal sehen was Du da noch findest.

Edit: Nun scheint es dem Ende zuzugehen, was die Durchsicht anbelangt. Eigentlich sollte ich ja nun zufrieden sein, dass Du das Ding ausgiebig getestet hast. Etwas meckern ist zuweilen auch nicht verkehrt, dann kann der Tag nur noch besser werden. Wenn jetzt noch etwas ist, dann bleibt das so, habe ich mir zumindest vorgenommen, dann sind das halt Versionen und eigentlich ist es ja auch so.

Speichere ja alles noch einmal unter anderen Namen ab, denn allein nach dem DPMA gibt es schon um die 50 eingetragene Marken, die mit XML beginnen. Bei einer Script-Beschreibung ist das eigentlich egal, ein Feedreader ist nun einmal ein Feedreader, doch wenn man den dann eventuell bewerben möchte, könnte das anders aussehen.

Geändert von Melewo (17-06-2013 um 18:23 Uhr)
Mit Zitat antworten
  #83 (permalink)  
Alt 17-06-2013, 22:04
newbie1955
 Registrierter Benutzer
Links : Onlinestatus : newbie1955 ist offline
Registriert seit: Dec 2012
Beiträge: 241
newbie1955 befindet sich auf einem aufstrebenden Ast
Standard Ja,

ich habe noch bei Euronews ein Problem entdeckt, da wird anscheinend noch die Schlagzeile in den Link eingefügt, es steht aber erstmal ein Platzhalter (Tilde + Ziffer) drin, der jetzt durch den feedreader entfernt wird, so dass er die Seite dann nicht findet. Kannst es Dir anschauen, wenn Du willst.

euronews

Musst ja auch nix mehr ändern Ich kann ja auch in Einzelfällen auf den Magpie-Parser zurückgreifen.

Ich habe Dich als Hinweis in mein Impressum aufgenommen und auf Deine Seite verlinkt. Ich glaube kaum, dass es da markenrechtliche Probleme gibt, so wie es da steht.

Den vorgeschlagenen Test werde ich dann demnächst auch mal machen.

Alles kriegt man sowieso nicht ideal gelöst, der NDR hat ja gar keine Verlinkung, sondern alle Meldungen als Akkordeon dargestellt, so das man auch keine Einzellinks ausgeben kann. Und beim Saarländischen Rundfunk muss man auch sehr tricksen und sich durch 7 Seiten parsen, um an description-Text zu kommen.

Nochmals Dank und Gruß
newbie1955
Mit Zitat antworten
  #84 (permalink)  
Alt 17-06-2013, 23:49
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von newbie1955 Beitrag anzeigen
Ich glaube kaum, dass es da markenrechtliche Probleme gibt, so wie es da steht.
Bei Dir nicht, habe den Link gefunden, danke.

Laden tut der "http://feeds.feedburner.com/euronews/de/home?format=xml" eigentlich normal, doch der wird doch über feedburner ausgeliefert und Google ist da nicht ganz so uneigennützig. Die Links sehen ja so aus:

HTML-Code:
<link>http://feedproxy.google.com/~r/euronews/de/home/~3/nbcMxRYfNcE/</link>
An die restlichen würde man auch kommen, dann müsste halt der zusätzlich Tag aufgenommen werden.

Solange es nur ein Script und kein Produkt ist, da braucht einen so etwas nicht zu interessieren. Wenn es aber als Produkt ausgelegt werden könnte, weil es zum Beispiel für 1 Euro bei eBay unter einem Namen eingestellt wird, dann sieht die Sache schon ein wenig anders aus. Nur mal so ein Auszug, was so beim DPMA registriert wurde:

Zitat:
Datenbestand Aktenzeichen/Registernummer Wiedergabe der Marke
DE 399517731 XML-Info
DE 399517766 XML-Online
DE 399517774 XML-Training
DE 399531785 XML-Forum
DE 399550348 XML-Info
DE 300511841 XML-Builder
EM 9591843 XML Validator
EM 11595725 Xml Robot
Bei PHP habe ich zum Beispiel in den Lizenzbedingungen gelesen, dass PHP nicht in einem Produktnamen verwendet werden darf. Wie sich das bei XML verhält weiß ich nicht. Doch nun kannst Du oder ich oder jeder andere Tutorials machen, soviel wie Du oder ich oder ein anderer möchte und die in den Tutorials beschrieben Scripts auch PHP-Scriptname oder wie auch immer benennen, spielt alles keine Rolle, doch wer dann ein fertiges Script als Produkt unter diesen Namen bei eBay anbieten möchte, der kann gewaltig auf die Nase fallen. Das XML habe ich jetzt noch belassen, da müsste ich erst einmal sehen, ob da auch etwas quer laufen könnte. Bisher biete ich ja auch noch nichts an.

Ein Blog hatte mal ohne irgendwelche Hintergedanken diese Olympischen Ringe auf der Seite irgendwie abgebildet. Zumindest so lange, bis vom Olympischen Komitee eine Abmahnung mit einer Kostennote von 30.000 Euro kam. Die haben sich dann, nach dem sie die Ringe selbstverständlich sofort entfernten, wohl auf eine Summe von 15.000 geeinigt, wenn ich mich recht entsinne. Bei den Olympischen Ringen hätte ich mir auch nichts gedacht, sind aber halt als Bildmarke geschützt.

Zitat:
Die abgeleitete Software darf ohne vorherige Erlaubnis der PHP Group weder mit dem Namen „PHP“ beworben werden, noch darf die abgeleitete Software „PHP“ in ihrem Namen enthalten.
PHP-Lizenz ? Wikipedia

Nun ist die Frage, was die unter einer abgeleiteter Software verstehen und ab und an liest sich das so, als würde es sich darauf beziehen, wenn jemand eine PHP ähnliche Serversoftware entwickeln möchte, die den Kern von PHP mitbenutzt oder so.

Geändert von Melewo (18-06-2013 um 00:22 Uhr)
Mit Zitat antworten
  #85 (permalink)  
Alt 19-06-2013, 14:25
newbie1955
 Registrierter Benutzer
Links : Onlinestatus : newbie1955 ist offline
Registriert seit: Dec 2012
Beiträge: 241
newbie1955 befindet sich auf einem aufstrebenden Ast
Standard Frage

Hallo, Du filterst doch in den feedfunktionien eigentlich schon alles raus, was in die Ausgabe nicht reingehört. Ich habe dennnoch eine Description-Ausgabe, die den eigentlichen Text erst nach unendlich vielen scheinbaren Leerzeichen ausgibt, obwohl ich den Inhalt von description trimme.

HTML-Code:
 <description>&lt;div class=&quot;field field-article-lead-image&quot;&gt;     &lt;div class=&quot;field-items&quot;&gt;             &lt;div class=&quot;field-item odd&quot;&gt;                     &lt;img src=&quot;http://www.handelszeitung.ch/sites/handelszeitung.ch/files/imagecache/left-standard-teaser/lead_image/hagel.jpg&quot; alt=&quot;Hagelsturm im Kanton Zürich kostet Millionen&quot; title=&quot;Hagelsturm im Kanton Zürich kostet Millionen&quot;  class=&quot;imagecache imagecache-left-standard-teaser imagecache-default imagecache-left-standard-teaser_default&quot; width=&quot;218&quot; height=&quot;130&quot; /&gt;        &lt;/div&gt;         &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;field field-article-lead&quot;&gt;     &lt;div class=&quot;field-items&quot;&gt;             &lt;div class=&quot;field-item odd&quot;&gt;                     Der Hagelsturm von Dienstagabend richtete im Kanton Zürich einen Schaden von rund 15 Millionen Franken an. Mehrere Tausend Gebäude wurden beschädigt.        &lt;/div&gt;         &lt;/div&gt; &lt;/div&gt; </description>
Ich brauche nur den Text ab "Der Hagelsturm.." Er lässt jetzt nur das Bild und die Sonderzeichen weg, lässt aber den freien Raum trotz trim bestehen.

Gruß
newbie1955
Mit Zitat antworten
  #86 (permalink)  
Alt 19-06-2013, 15:09
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Alle Leerzeichen kannst du nicht entfernen, sonst würde es so aussehen:

Zitat:
DerHagelsturmvonDienstagabendrichteteimKanton
Ich hatte hier aber, falls ich mich richtig erinnere, schon einmal ein Beispiel veröffentlicht (war denke ich ein Thread von Dir mit einer anderen Frage oder irre ich mich?) wie Du aus einem String zwei und mehr Leerzeichen in Reihe entfernst.

Ja, es war in einem Thread von Dir:
Zitat:
Zitat von Melewo Beitrag anzeigen
PHP-Code:
...
// Entfernt alle Zeilenumbrüche und mehr als 1 Leerzeichen in Reihe,
// so dass aus dem String ein String in Reihe wird.
$data preg_replace("#\s{2,}#"""$data); 
str_replace-Problem

Nur solltest Du es in diesem Fall nur da einsetzen, wo es benötigt wird.

Geändert von Melewo (19-06-2013 um 15:22 Uhr)
Mit Zitat antworten
  #87 (permalink)  
Alt 19-06-2013, 16:38
newbie1955
 Registrierter Benutzer
Links : Onlinestatus : newbie1955 ist offline
Registriert seit: Dec 2012
Beiträge: 241
newbie1955 befindet sich auf einem aufstrebenden Ast
Standard Danke

ja, ein großer Teil der Leerzeichen geht damit weg, zwei Zeilen bleiben, warum weiß ich nicht. Es gab doch außer var_dump und ähnlichem auch noch eine Ausgabe - Möglichkeit, mit der man sich exakt jedes Zeichen anzeigen lassen konnte, das da scheinbar als Leerzeichen stehen bleibt.
Mit Zitat antworten
  #88 (permalink)  
Alt 19-06-2013, 17:45
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Das weiß ich jetzt nicht so genau.
Welchen Editor benutzt Du?
Im Notepad++ Der Hagelsturm von Dienstagabend richtete im Kanton

Mit TextFX Convert to Hex und die normalen Leerzeichen (20) siehst Du ja dann und die Du nicht kennst, die kannst Du Dir aus einer Zeichentabelle holen:

Code:
"000000058  44 65 72 20 48 61 67 65-6C 73 74 75 72 6D 20 76   |Der Hagelsturm v|"
"000000068  6F 6E 20 44 69 65 6E 73-74 61 67 61 62 65 6E 64   |on Dienstagabend|"
"000000078  20 72 69 63 68 74 65 74-65 20 69 6D 20 4B 61 6E   | richtete im Kan|"
"000000088  74 6F 6E 0D 0A                                    |ton..           |"
Unicode/UTF-8-Zeichentabelle

Es gibt dann noch diese Funktionen:

dechex() - Dezimal zu Hexadezimal Umwandlung
decbin() - Dezimal zu Binär Konvertierung
bindec() - Umwandlung von binär zu dezimal
hexdec() - Hexadezimal zu Dezimal Umwandlung
decoct() - Dezimal zu Oktal Umwandlung

Und Du hast noch chr und ord, falls Du so etwas wie auf dieser Seite beschrieben meintest:

ASCII-Zeichen zu Dezimalwert und umgekehrt (PHP, Beispiele)

Geändert von Melewo (19-06-2013 um 18:12 Uhr)
Mit Zitat antworten
  #89 (permalink)  
Alt 20-06-2013, 00:30
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Ich konnte das gar nicht mit ansehen, wie langsam die Startseite vom Nachrichtentisch ladet. Habe mal etwas probiert und gebastelt, wie es schneller gehen würde. Ist jedoch noch keine ausgereifte Lösung, nur erst einmal ein Test.

Also, den PHP Code raus aus den Seiten und in eine kleine Datei packen. Im Beispiel die feeds.php, in der wie gehabt die funktionen.php includet wird:

PHP-Code:
<?php
ini_set
("user_agent""Mozilla/5.0 (compatible; Feedreader/PHP +".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"].")");
header("Content-Type: text/html; charset=UTF-8");
error_reporting(E_ALL);

$feedfu "funktionen.php";           // Seite mit den Funktionen

if (file_exists($feedfu)) {include_once $feedfu;
} else {echo 
"Feedfunktionen konnte nicht geladen werden!\n";
}

// Feed-Adressen aufnehmen und nummerieren

$feedurls = array (

    
=> "www.tagesschau.de/xml/atom/",
    
=> "www.spiegel.de/wirtschaft/index.rss",
    
=> "rss2.focus.de/c/32191/f/443313/index.rss",
    
=> "www.heise.de/developer/rss/news-atom.xml"
);

if (isset(
$_GET["feedid"]) and !empty($_GET["feedid"])) {

    
$feedid preg_replace("/[^0-9]/"""$_GET["feedid"]);
    
verarbeiteFeed("http://".$feedurls[$feedid]);
}
?>
In den eigentlichen HTML-Seiten dann Ajax-Funktionen:

HTML-Code:
<!DOCTYPE html>
<html>

<head>
<title>Feedreader</title>
<link rel="stylesheet" type="text/css" href="feedstyle.css">
</head>

<body>
<h1>Feedreader für RSS und Atom</h1>

<script type="text/javascript">

var feedObj = null;
    feedObj = new XMLHttpRequest();
var i = 1;

window.onload = function() {

    function beginneLaden() {

        feedObj.open("GET", "feeds.php?feedid="+i);
        feedObj.onreadystatechange = ladeFeeds;
        feedObj.send(null);

        function ladeFeeds() {

            var fa = false;
            var anzahl = 5;      // Anzahl der Feeds angeben

            if (feedObj.readyState == 4) {
                document.getElementById("feed"+i).innerHTML += feedObj.responseText;
                i++;
                fa = true;
                if (i > anzahl) {fa = false;
                }
            }
            if (fa != false) {

                beginneLaden();
            }
        }
    }
    beginneLaden();
}
</script>

<!--
 Hier so viele Div-Bereiche im Dokument anlegen und mit einer ID versehen,
 wie Feeds in der Seite geladen werden sollen.
-->
<div id="feed1"></div>
<div id="feed2"></div>
<div id="feed3"></div>
<div id="feed4"></div>
</body>
</html>
Prinzip: Zuerst wird ein einzelner Request gestartet, doch so wie die Daten des ersten Feeds übertragen wurden (readyState == 4), wird die i um eins erhöht und die Funktion erneut aufgerufen. Wenn der erste Feed ein schneller ist, ist auch sehr schnell etwas zu sehen und die restlichen folgen dann, erkennbar daran, dass der Scrollbalken kürzer wird, weil die Seite länger wird.

Der Nachteil, die Seite enthält keinen für Suchmaschinen verwertbaren Content mehr. Eine Alternative wäre, zuerst die schnellen mit PHP zu laden, die langsamen dann per Ajax zusätzlich.

Edit: Habe mal ein kleines Demo mit 5 Feeds angefertigt, damit Du den Unterschied beim Laden einer Seite siehst:

Nur ein Demo - Feeds laden mit Ajax

Also, nach einer halben Sekunde ist die Seite zu sehen, dann folgen die Feeds. Finde ich für Besucher einer Seite angenehmer.

Geändert von Melewo (20-06-2013 um 15:59 Uhr)
Mit Zitat antworten
  #90 (permalink)  
Alt 20-06-2013, 17:15
newbie1955
 Registrierter Benutzer
Links : Onlinestatus : newbie1955 ist offline
Registriert seit: Dec 2012
Beiträge: 241
newbie1955 befindet sich auf einem aufstrebenden Ast
Standard Oha

ja, ich wusste, dass das relativ lange dauert und habe mit javascript erste Versuche gemacht, ohne dass es alles viel schneller lief - ich wollte nicht so viel damit herumpfuschen, ich habe aber immer nach Lösungen gesucht, die Seite Stück für Stück zu laden, damit man schon mal die erste feeds gezeigt werden, während die nächsten noch laden. Ich hatte auch an Cron-Jobs gedacht, damit schon was da ist, wenn die Seite aufgerufen wird, aber mein provider unterstützt das nicht.

Du musst Dir das so vorstellen: Es gab eine Seite eines Ex-Kollegen von mir, die aber urheberrechtliche Schwierigkeiten hatte, weil der Ex-Kollege leider nicht nur die feeds, sondern auch ein paar urheberrechtlich geschützte contents verbreitete, ohne einen Vertrag mit den Agenturen zu haben. Deshalb hat er die Seite gleich ganz vom Netz genommen (zumal er auch verständlicherweise verärgert war, dass das irrsinnig viel Arbeit macht, aber aus rechtlichen Gründen ja gar kein Geld bringen darf ).

Da habe ich mich dann - fast ohne PHP und mit nur wenig HTML/CSS-Kenntnissen - rangemacht und erstmal gebastelt, weil wir hier (unsere Nachrichtenredaktion ist der dritte feed von oben links) immer sehr viel mit einer solchen Seite gearbeitet haben, um zu sehen, was es an Themen sonst noch so gibt und was die anderen Medien wichtig finden. Am Anfang war das ganze komplett ohne Layout, nur dass wir uns nicht mehr einzeln durch die Medienseiten klicken mussten. So, und das ist jetzt eben daraus geworden.

Ich werden mir Dein Script in Ruhe anschauen - und bin Dir wie stets sehr dankbar für die viele Arbeit. Der erste Eindruck der Demo ist toll. Ob und wann ich es umstelle, muss ich dann sehen. Denn ich fürchte, sonst falle ich Dir noch Jahre auf die Nerven, weil, immer wenn ich etwas ändern will, weiß ich dann nicht weiter usw. Mein erste Frage wäre schon mal, was denn in den divs "feed1" usw noch drinnestehen soll, was die funktion aufruft?

Wobei ich ja auch noch bei einzelne Medien Extra-Lösungen habe, wo ich direkt auf die Seite gehe und h2-tags lese usw.

Bis demnächst
newbie1955

Geändert von newbie1955 (20-06-2013 um 17:23 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
xpath array foreach


LinkBacks (?)
LinkBack to this Thread: https://www.php-resource.de/forum/php-developer-forum/104038-foreach-schleifen-und-arrays.html
Erstellt von For Type Datum
RSS Feed einbinden This thread Refback 29-09-2013 21:09

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
foreach schleifen disabled der_meier_hans PHP Developer Forum 1 06-06-2008 17:37
Schleifen, Form und Arrays QWerner PHP Developer Forum 9 16-06-2006 05:16
Problem mit Arrays und Schleifen mobo81 PHP Developer Forum 3 14-03-2006 19:07
[PHP5] Problem mit foreach-schleifen ausgaben scriptmaus Projekthilfe 12 07-12-2005 14:43
foreach() und zwei arrays Maranello-550 PHP Developer Forum 5 07-11-2003 21:43

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:00 Uhr.