Hallo,
ich kenne mich mit Php leider garnicht aus und hoffe mir kann hier jemand weiterhelfen.
Auf einer Webseite soll ein Formular-Skript von einem Merchant eingebunden werden, welches die cURL Funktion nutzt.
Dabei nutze ich einen Shared Hoster bei dem wie gewöhnlich eine open_basedir Restriktion vorliegt.
Nun erhalte ich die Fehlermeldung:
Im Internet habe ich verschiedene Workarounds auf Englisch gefunden, die sich mir in der Umsetzung aber leider nicht erschlossen haben.
Die verwendeten Dateien sehen folgendermaßen aus:
index.php
Anbieter-lib.php
json.php
Das ist der gesamte Code. Das Formular an sich ist beim Anbieter gehostet.
Gibt es eine Möglichkeit für mich das Ganze zum Laufen zu bekommen ohne auf einen eigenen Server umsteigen zu müssen?
Würde mich über eure Hilfe sehr freuen.
Vielen Dank im Voraus
Christof
ich kenne mich mit Php leider garnicht aus und hoffe mir kann hier jemand weiterhelfen.
Auf einer Webseite soll ein Formular-Skript von einem Merchant eingebunden werden, welches die cURL Funktion nutzt.
Dabei nutze ich einen Shared Hoster bei dem wie gewöhnlich eine open_basedir Restriktion vorliegt.
Nun erhalte ich die Fehlermeldung:
CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set
Die verwendeten Dateien sehen folgendermaßen aus:
index.php
PHP-Code:
<?php
// Anmerkung:
// Titel, HTML und CSS kann frei angepasst werden, nur das JavaScript und
// die drei PHP Befehle sollten nicht entfernt werden
// Formular Modul laden
include('Anbieter-lib.php');
?>
<!DOCTYPE html>
<html>
<head>
<title>Formular</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- Standard JavaScript laden (MUSS immer geladen werden): -->
<script type="text/javascript" src="?f=js<?php echo trim($_GET['page']); ?>"></script>
<!-- Dieser Befehl l�dt das Standard CSS: -->
<link rel="stylesheet" media="all" type="text/css" href="?f=css" />
<!-- Alternativ kann auch ein eigenes Stylesheet geladen werden: -->
<!--<link rel="stylesheet" media="all" type="text/css" href="custom.css" />-->
</head>
<body>
<div style="text-align:left">
<?php Anbieter_show_form(); ?>
</div>
</body>
</html>
Anbieter-lib.php
PHP-Code:
<?php
/*
** Anbieter Whitelabel Proxy Code (v0.3 - cURL Version)
*/
//
// Konfiguration
//
$Anbieter_config = array(
// Bitte hier die 9000 durch die eigene Partner ID austauschen:
'pid' => 9000,
// Standard Sub-ID, wird ggf. weiter unten durch URL-Parameter überschreiben
// (kann leer bleiben) Bsp: 'subid' => 'subtest',
'subid' => '',
// Sollen die Daten per 'http' oder verschlüsselt per 'https' übertragen werden?
// (kann entsprechend geändert werden, wenn passendes Modul fehlt)
'protocol' => 'http'
);
// Wenn vorhanden Sub-ID aus URL-Parameter (&subid=) übernehmen
// (falls nicht gewünscht, einfach die komplette nächste Zeile entfernen)
if (isset($_GET['subid'])) $Anbieter_config['subid'] = $_GET['subid'];
//
// Ab hier muss nichts mehr angepasst werden
//
if (!function_exists('curl_init')) die('Fehler: Das zur Ausführung notwendige cURL PHP Modul ist nicht installiert!');
$Anbieter_base_url = 'https://www.Anbieter.de/web-control/wl_proxy.php';
$Anbieter_base_url_images = 'https://www.Anbieter.de/images/';
unset($Anbieter_config['protocol']);
$bk_conn = curl_init();
$bk_static_file = isset($_GET['f']) ? trim($_GET['f']) : '';
if ($bk_static_file){
if (substr($bk_static_file, 0, 2) == 'js'){ header('Content-Type: application/javascript'); }
else if ($bk_static_file == 'css'){ header('Content-Type: text/css'); }
else {
if (substr($bk_static_file, -3) == 'jpg'){ header('Content-type: image/jpeg'); }
else if (substr($bk_static_file, -3) == 'gif'){ header('Content-Type: image/gif'); }
else if (substr($bk_static_file, -3) == 'png'){ header('Content-Type: image/png'); }
$Anbieter_base_url = $Anbieter_base_url_images.$bk_static_file;
}
Anbieter_request($Anbieter_base_url . '?f=' . $bk_static_file, false);
exit;
}
function Anbieter_show_form(){
global $bk_conn, $Anbieter_base_url, $Anbieter_config;
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
curl_setopt($bk_conn, CURLOPT_POST, 1);
curl_setopt($bk_conn, CURLOPT_POSTFIELDS, http_build_query($_POST));
}
$user_params = array('page', 'f', 'bk_aid', 'c');
foreach ($user_params as $p)
if (isset($_GET[$p])) $Anbieter_config[$p] = $_GET[$p];
if (isset($_SERVER['HTTP_REFERER']))
curl_setopt($bk_conn, CURLOPT_REFERER, $_SERVER['HTTP_REFERER']);
Anbieter_request($Anbieter_base_url . '?' . http_build_query($Anbieter_config));
}
function Anbieter_request($url, $get_header=true){
global $bk_conn, $Anbieter_base_url;
curl_setopt($bk_conn, CURLOPT_URL, $url);
curl_setopt($bk_conn, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($bk_conn, CURLOPT_USERAGENT, 'wlproxy');
curl_setopt($bk_conn, CURLOPT_HEADER, $get_header);
curl_setopt($bk_conn, CURLOPT_RETURNTRANSFER, true);
curl_setopt($bk_conn, CURLOPT_TIMEOUT, 30);
curl_setopt($bk_conn, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($bk_conn, CURLOPT_MAXREDIRS, 5);
$output = curl_exec($bk_conn);
if ($get_header){
list($header, $output) = explode("\r\n\r\n", $output, 2);
if (preg_match('/<!--redir-->/', $output) && preg_match('/Location: ([^\r\n]+)/i', $header, $m)){
$url = $m[1];
if (!preg_match('/^https?:/i', $url))
$url = $Anbieter_base_url . $url;
curl_setopt($bk_conn, CURLOPT_URL, $url);
curl_setopt($bk_conn, CURLOPT_HEADER, 0);
$output = curl_exec($bk_conn);
}
}
echo preg_replace('/\/images\/([a-z_]+)\.([jpg|gif|png]+)/is', '?f=$1.$2', $output);
curl_close($bk_conn);
}
?>
json.php
PHP-Code:
<?php
// Hier sind keine Anpassungen notwendig
define('POSTURL', 'https://www.Anbieter.de/json.php');
define('POSTVARS', http_build_query($_REQUEST)); // POST VARIABLES TO BE SENT
// INITIALIZE ALL VARS
$ch='';
if($_SERVER['REQUEST_METHOD']==='POST') { // REQUIRE POST OR DIE
$ch = curl_init(POSTURL);
curl_setopt($ch, CURLOPT_POST ,1);
curl_setopt($ch, CURLOPT_POSTFIELDS ,POSTVARS);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1);
curl_setopt($ch, CURLOPT_HEADER ,0); // DO RETURN HTTP HEADERS
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); // RETURN THE CONTENTS OF THE CALL
$output = curl_exec($ch);
echo $output;
curl_close($ch);
} else die('Hacking attempt Logged!');
exit;
?>
Das ist der gesamte Code. Das Formular an sich ist beim Anbieter gehostet.
Gibt es eine Möglichkeit für mich das Ganze zum Laufen zu bekommen ohne auf einen eigenen Server umsteigen zu müssen?

Würde mich über eure Hilfe sehr freuen.
Vielen Dank im Voraus
Christof
Kommentar