Wir (ich und Sucker) möchten von hier das Kinoprogramm auslesen, ähnlich wie bei dieser Community. Ich habe von der Community folgendes Script bekommen, was allerdings eine Fehlermeldung produziert.
Script:
<?
$woischsher = "http://www.kinokempten.de/programm.html";
$wobeginnds = "<u>Unser Kinoprogramm</u></h3>";
$woischsend = "- Colosseum Center Kempten<br>";
$deszeigsarlhalt = implode(file($woischsher));
$deszeigsarlhalt = substr($deszeigsarlhalt,
strpos($deszeigsarlhalt, $wobeginnds),
strpos($deszeigsarlhalt,
$woischsend)-strpos($deszeigsarlhalt, $wobeginnds)+strlen($woischsend));
echo $deszeigsarlhalt;
?>
Fehlermeldung: (>live)
Warning: file(): URL file-access is disabled in the server configuration in /data/wwwcust/cs4-1/html/inc/kinoprogramm.inc.php on line 11
Warning: file(http://www.kinokempten.de/programm.html): failed to open stream: no suitable wrapper could be found in /data/wwwcust/cs4-1/html/inc/kinoprogramm.inc.php on line 11
Warning: implode(): Argument to implode must be an array. in /data/wwwcust/cs4-1/html/inc/kinoprogramm.inc.php on line 11
Die Fehlermeldung lässt auf irgendein Serverseitiges Problem schließen, aber ganz schlau werd ich daraus nicht. Was läuft falsch?
Anscheinend ist auf diesem Server die Möglichkeit deaktiviert, per file() auf externe Seiten zuzugreifen.
Quote
Warning: file(): URL file-access is disabled in the server configuration in /data/wwwcust/cs4-1/html/inc/kinoprogramm.inc.php on line 11
xyz-141el
http://php.benscom.com/manual/en/ref.filesystem.php#ini.allow-url-fopen
Diese Einstellung wird wahrscheinlich das Problem sein.
wenn ich das richtig vertehe, kann eingestellt werden welche urls ein dokument auslesen dürfen, oder?
damit es funktionieren würde müsste das kino also unsere url adden (oder wir das ganze von der fh seite holen) oder?
€ oder auch nicht, siehe
http://www.sheep24.de/sheep/kino.php
Nicht ganz. ;)
Auf xyz-187s Server ist momentan eingestellt, dass ein Script nicht auf einen externen Server zugreifen darf.
Das hat also nix mit dem anderen Server zu tun, auf den er zugreifen will.
also müssen wir das ändern (wie :D)
bzw könnnen wir das überhaupt, oder muss das der provider machen?
allow_url_fopen Off Off :(
Habs mal mit folgendem Code versucht:
if(ini_get('allow_url_fopen') != 1)
{
@ini_set('allow_url_fopen', '1');
if(ini_get('allow_url_fopen') != 1)
{
die("Please set the variable 'allow_url_fopen' to the value 1");
}
}
kommt natürlich: Please set the variable 'allow_url_fopen' to the value 1
:\
Hoster fragen?
Quote
Original von xyz-72
Hoster fragen?
jau hab grad ne anfrage geschickt, mal hoffen
die sponsorn uns die hp sogar :)
bau dir doch einfach ne eigene anfrage oder schau mal bei pear nach. ne eigene anfrage könnte ganz einfach so aussehen: (von php.net kopiert und leicht verbessert)
<?php
$fp = fsockopen ("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fputs ($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\n\r\n");
while (!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
?>
am besten nimmst du ne pear klasse wie z.b. die hier:
http://pear.php.net/package/HTTP_Client
Bist du sicher, dass fsockopen() nicht auf allow_url_fopen hört? xyz-48n wäre die Einstellung nämlich ziemlich sinnbefreit. ;)
Meiner Meinung nach funktioniert fsockopen auch ohne allow_url_fopen
Lege ich aber nicht meine Hand dafür ins Feuer.
Quote
Original von xyz-145
Bist du sicher, dass fsockopen() nicht auf allow_url_fopen hört? xyz-48n wäre die Einstellung nämlich ziemlich sinnbefreit. ;)
fsockopen müsste man m.E. extra deaktivieren
wenn ich diesen code verwende:
<?
$fp = fsockopen ("http://www.kinokempten.de/programm.html", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fputs ($fp, "GET / HTTP/1.0\r\nHost: http://www.kinokempten.de/programm.html\r\n\r\n");
while (!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
?>
bekomm ich diese fehlermeldung
Quote
http://www.fosbos-community.de/?go=kinoprogramm2Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or serxyz-229e not known in /data/wwwcust/cs4-1/html/inc/kinoprogramm2.inc.php on line 6
Warning: fsockopen(): unable to connect to http://www.kinokempten.de/programm.html:80 in /data/wwwcust/cs4-1/html/inc/kinoprogramm2.inc.php on line 6
Permission denied (13)
http://www.fosbos-community.de/?go=kinoprogramm2
noch nie mit sockets gearbeitet?
ok...
<?php
so müssts gehen
$fp = fsockopen ("www.kinokempten.de", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fputs ($fp, "GET /programm.html HTTP/1.0\r\nHost: www.kinokempten.de\r\n\r\n");
while (!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
?>
ne, hab ich noch nicht *duck*
hm nice, funktioniert soweit
jetzt muss ichs nur noch schaffen einen bestimmten bereich auszulesen und dem dann ne andere formatierung zu geben :D
aber danke ;)
http://de2.php.net/manual/de/function.preg-match-all.php
http://www.regenechsen.de ;)
Viel Spass beim Einlesen.
Habs jetzt doch über den von xyz-187 geposteten Code gelöst.
Erhalte jetzt folgende Ausgabe, wie schaffe ich es am besten die zu formatieren? Also zum einen hinsichtlich xhtml transitional zum anderen natürlich design?:
€ hier stand viel schwachsinn :D
Netter Code, aber ein Anhang hätt's auch getan.
Wie schon gesagt: RegEx ist dein Freund :)
Einlesen, parsen, formatieren, ausgeben.
hm naja, da ich denke dass die das ned oft ändern werden, mach ich das einfach mal so in der art
$a = str_replace("<br>", "<br />", $a);
halt jedes argument.. ^^
wenn ich regex brauch komm ich garantiert auf euch zurück ^^
€ was is schneller, wenn ich den text 20mal durch str_replace laufen lass, oder das ganze mit 2 arrays und preg_replace löse?
Für statische Ersetzung reicht str_replace() und bevor du mit RegEx drangehst, lerne es bitte.
Gewöhnlich sieht ein RegEx nämlich so aus:
/Suchmuster/Modifier
Das Suchmuster wird von "alphanumerischen" Zeichen (/,#,|,-,+,...) eingefasst. Das Verhalten wird von den Modifiern gesteuert.