GET Variablen an Seite / Datei übergeben

DiDiJo

Erfahrenes Mitglied
Hi Leute,

ich verzweifel gerade an einem total Penauts-Problem. Ich habe in einem Projekt mehrere Formulare die alle per AJAX verschickt werden. Egal welches Formular ich ausfülle, alle Anfrage gehen an eine ajax.submitForms.php, die den entsprechenden Mailversand steuert. So sieht die Datei in etwas aus:
PHP:
if ($_REQUEST['action_form'] == 'kontakt') {	
	$meldung = $MAIL->sendKontaktForm($_REQUEST);	
	echo $meldung;
	echo $google_analytics_code_kontakt;				
}

if ($_REQUEST['action_form'] == 'feedback') {
	$meldung = $MAIL->sendFeedbackForm($_REQUEST);	
	echo $meldung;
}

if ($_REQUEST['action_form'] == 'zeitungsformular') {	
	$meldung = $MAIL->sendZeitungsForm($_REQUEST);	
	echo $meldung;
}

[....]

So ... jetzt habe ich bei allen Funktionen das gleiche Problem:
PHP:
function sendKontaktForm($request){
        $homepage = $HP->getUserHomepageSettings();
        $user = $USER->data($_SESSION['uid']);
	
	$mailEmpf = $user['email'];
	$mailAbsender = $request["email"];
	$mailName 	  = 'Zeitungsanfrage - '.$homepage['basic_title'];
	$mailSubject  = 'Zeitungsanfrage übers Internet';
				
	$path = $homepage['http_path'].'/inc/emails/zeitungsformular.php?'.http_build_query($request,'','&');		
	$message = implode('',file($path));	
		
	$this->mailing($mailSubject, $message, $mailEmpf);
	$this->autoMail($request);
		
	return addslashes('<h1>Vielen Dank für Ihre Feedback.</h1>');
}

Ich kriege zum Erbrechen nicht meine Variablen an die zeitungsformular.php übergeben. Ich habe schon zig Varianten durch. Ich habe es http_build_query verscuht ... so werden aber Sonderzeichen und auch @s kaputt gemacht und ich kriege es nicht sauber zurückgeformt. Ein anderer Versuch war einfach alles in eine Variable zu schreiben:
PHP:
$path = $homepage['http_path'].'/inc/emails/kontaktformular.php?myVars='.urlencode(json_encode($_REQUEST));

und auf der anderen Seite
$requestDummy = urldecode(json_decode($_REQUEST['myvars']))

Das hatte mal kurzfristig funktioniert, dann hat irgendwer was verändert und nun funktioniert das auch nicht mehr.

Mein nächster Versuch, war alles per cURL zu übergeben enmal per GET und einmal per POST:
PHP:
$agent = curl_init(); 
curl_setopt($agent, CURLOPT_URL, $path);
curl_setopt($agent, CURLOPT_POST, true);
curl_setopt($agent, CURLOPT_POSTFIELDS, $_REQUEST);   
curl_setopt($agent, CURLOPT_RETURNTRANSFER, true); 

$message = curl_exec($agent);

curl_close($agent);

Auch hier hängt sich mein Skript auf. Und Ja .. der Pfad der in $path drin steht ist erreichbar. Wenn ich die Adresse aufrufe sieht auch alles Prima aus. Möchte ich per skript Die seite öffnen und mir in eine Variable speichern so geht alles in die Hose.

Kann mir jemand BITTE helfen ... ich bin echt mit meinem Latein am Ende ...


Frustrierte Grüße

Daniel
 
Morgen,

bereits schon über $_SESSION nachgedacht?

Vielleicht hilft dir auch "rawurlencode()" und "rawurldecode()".


Edit:

Oder mit $_SERVER['REQUEST_URI']; die aufgerufenen Variablen bearbeiten:


PHP:
meineurl=$_SERVER['REQUEST_URI'];
meineurlvars_a=explode("?",meineurl);
meineurlvars=meineurlvars_a[1];

meineneueurl="http://mein.nmai/serverbla.php?".meineurlvars;

Gruß
 
Zuletzt bearbeitet:
Wie kommen die Variablen in das superglobale Array? Tipp: Lieber mit POST und GET getrennt arbeiten!
Warum sind die Variablen urlencodet? Normalerweise regelt PHP die Dekodierung automatisch?

Möglich wäre ein manueller eingriff (wendest du selber irgendwelche filter/kodierungsfunktionen auf die Variablen an?) oder zB ein falsch angegebenes accept-charset der form.
 
Zurück