Eine Frage zur Sicherheit der Funktion curl_init().
Der Eine oder Andere kennt sicherlich das Browsergame MyMiniCity. Dafür habe ich ein fertiges PHP Script, welches automatisch die richtige Funktion für Verkehr, Sicherheit etc. aufruft, umgeschrieben. Umgeschrieben deswegen, weil ich auf meinem Server so ziemlich alles an Funktionen verboten habe, was das nachladen fremder Scripts ermöglicht. Das fertige Script sieht aktuell so aus:
Code: Alles auswählen
<?php
// standard hack prevent
define('IN_PHPBB', true);
$phpbb_root_path = './';
// Aufruf:
// für das Bild: meinestadt.php
// für die Weiterleitung: meinestadt.php?action=link
// ------ Ab hier anpassen -----
// Hier Stadtnamen eintragen
$stadtname = "dungeon-bbs";
// ggf. anpassen, sollte aber funktionieren, wenn das Bildunterverzeichnis /mmc im selben Verzeichnis wie das Script liegt.
$bildverzeichnis = $_SERVER["SERVER_NAME"] . dirname($_SERVER["PHP_SELF"]). "/mmc";
// ------ Ende anpassen --------
//Daten einlesen und unsinnige Eingaben (versuchte Injektionen) an Google weiterleiten
$schalter = $_GET['action'];
if ($schalter != "link" and $schalter !="") header("Location: " . "http://www.google.de/search?q=".$schalter);
// Inhalt von MMC abholen und in ein Objekt einlesen
//$xml = simplexml_load_file("http://dungeon-bbs.myminicity.com/xml");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://".$stadtname.".myminicity.com/xml");
curl_setopt($ch, CURLOPT_HEADER, 0);
// damit der String in die Variable geht, anstatt in die Browserausgabe
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml_inhalt = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($xml_inhalt);
$parturl = "";
// Objekt abarbeiten und die "Fehlstelle" finden
if($xml->transport < 100)
$parturl = "/tra";
elseif($xml->pollution > 0)
$parturl = "/env";
elseif($xml->unemployment > 0)
$parturl = "/ind";
elseif($xml->criminality > 0)
$parturl = "/sec";
// Sonderfall: Alles OK
else {
if ($schalter == "")
$parturl = "/pop";
else
$parturl = "";
}
// Ausgabe je nach Schalter
switch ($schalter) {
case 'link': header("Location: " . "http://" . $stadtname . ".myminicity.com" . $parturl);
break;
case '': header("Location: " . "http://" . $bildverzeichnis . $parturl . ".gif");
break;
default: die("Missing in action!");
}
?>
Code: Alles auswählen
$xml = simplexml_load_file("http://dungeon-bbs.myminicity.com/xml");
Code: Alles auswählen
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://".$stadtname.".myminicity.com/xml");
curl_setopt($ch, CURLOPT_HEADER, 0);
// damit der String in die Variable geht, anstatt in die Browserausgabe
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml_inhalt = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($xml_inhalt);
Bye