Willkommen in der Webstatt Zum Webstatt Blog und Stories
Sheep Sheep am 03.03.06 13:47

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?

netcup.de Warum gibt es hier Werbung?
Michael Michael am 03.03.06 13:51

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


Michael

sili sili am 03.03.06 13:51

http://php.benscom.com/manual/en/ref.filesystem.php#ini.allow-url-fopen
Diese Einstellung wird wahrscheinlich das Problem sein.

Christian am 03.03.06 14:02

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

milahu milahu am 03.03.06 14:05

Nicht ganz. ;)

Auf Sheeps 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.

Christian am 03.03.06 14:06

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


:\

Franky Franky am 03.03.06 14:28

Hoster fragen?

Christian am 03.03.06 14:45

Quote
Original von Franky
Hoster fragen?


jau hab grad ne anfrage geschickt, mal hoffen
die sponsorn uns die hp sogar :)

Snake am 03.03.06 15:02

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

milahu milahu am 03.03.06 15:16

Bist du sicher, dass fsockopen() nicht auf allow_url_fopen hört? Dann wäre die Einstellung nämlich ziemlich sinnbefreit. ;)

Sven Sven am 03.03.06 15:22

Meiner Meinung nach funktioniert fsockopen auch ohne allow_url_fopen
Lege ich aber nicht meine Hand dafür ins Feuer.

Snake am 03.03.06 15:33

Quote
Original von milahu
Bist du sicher, dass fsockopen() nicht auf allow_url_fopen hört? Dann wäre die Einstellung nämlich ziemlich sinnbefreit. ;)

fsockopen müsste man m.E. extra deaktivieren

Christian am 03.03.06 15:43

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 service 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

Snake am 03.03.06 15:47

noch nie mit sockets gearbeitet?
ok...
<?php

$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);
}
?>
so müssts gehen

Christian am 03.03.06 15:50

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 ;)

Sven Sven am 03.03.06 15:53

http://de2.php.net/manual/de/function.preg-match-all.php
http://www.regenechsen.de ;)
Viel Spass beim Einlesen.

Christian am 06.03.06 14:07

Habs jetzt doch über den von Sheep 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

milahu milahu am 06.03.06 14:24

Netter Code, aber ein Anhang hätt's auch getan.

Wie schon gesagt: RegEx ist dein Freund :)

Einlesen, parsen, formatieren, ausgeben.

Christian am 06.03.06 14:27

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?

milahu milahu am 06.03.06 15:19

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.

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt