Parse error: parse error, unexpected '@' in C:\pruegelpause\functions\flash.php(8) :

Marius Heil

Erfahrenes Mitglied
Hi,

und schon wieder ein Fehler.
Ich bin dabei, Flash und PHP Kommunizieren zu lassen, Flash soll nun bestimmte Funktionen aus der PHP Datei aufrufen dürfen, das hab ich folgendermaßen realisiert:
$aktion = '$ergebniss = '.$_GET['mode']."(".$_GET['argumente'].");";
eval($aktion);
Wie man denke ich gut sieht, kann ich so bestimmte Funktionen starten in der PHP Datei und noch zusätzlich Argumente übergeben.
Ich hab nun eine Funktion die als Argument eine E-mail Adresse erwartet.
Die übergeb ich nun über die URL:
http://localhost/flash.php?mode=emailtesten&argumente=wer@wer.de
Das @ Zeichen übergeb ich Codiert, ich erhalte dann allerdings den Fehler aus der Überschrift, mir ist grad aufgefallen, dass ichs auch einfach schnell mit nem anderen Zeichen Codieren könnte, interessiert mich aber, was ich machen kann, wenn ich das so übergeben will.
Über den Fehler bin ich schon öfters gestolpert.


Danke, Marius
 
Re: Parse error: parse error, unexpected '@' in C:\pruegelpause\functions\flash.php(8

Lass dir mal den Inhalt von $aktion ausgeben, dann solltest du den Fehler erkennen.

Abgesehen davon stellt dein Quellcode eine katastrophale Sicherheitslücke dar.
 
Re: Parse error: parse error, unexpected '@' in C:\pruegelpause\functions\flash.php(8

Eine Sicherheitslücke, inwiefern?
Dadurch, dass man dadurch einfach per Get Code einschleußen kann?
Mhh, könntest recht haben, das schau ich mri nochmal an, hast du ne Idee, was ich da anders machen könnte?
Ich kann natürlich als mode irgendne Zahl empfangen und die dann mit lauter if anweisungen oder case prpfen, welche es ist und dann die passende funktion starten, ist aber ein wenig komisch.


Marius
---
Ach ja, danke für die Hilfe, ich frag mich grad selber, weiso mir das nicht früher aufgefallen ist, dass das so net hinkommt, na ja, jetzt gehts.
Wegen der Sicherheitslücke, wie würdest dus denn machen?
 
Zuletzt bearbeitet:
Re: Parse error: parse error, unexpected '@' in C:\pruegelpause\functions\flash.php(8

Ich würde es eher wie folgt machen:
PHP:
<?php

	…
	switch( $_GET['mode'] ) {
		case 'emailtesten':
			$ergebnis = emailtesten($_GET['argumente']);
		break;
		…
	}
	// oder auch:
	$allowed_functions = array('emailtesten', …);
	if( in_array($_GET['mode']), $allowed_functions, true) ) {
		$ergebnis = call_user_func($_GET['mode'], $_GET['arguments']);
	}
	…

?>
Bestimmt gibt es auch noch weitere Möglichkeiten.
Eventuell solltest du noch prüfen, ob beide Parameter als Variablen vorhanden sind.
 
Re: Parse error: parse error, unexpected '@' in C:\pruegelpause\functions\flash.php(8

Mh, danke, so solltes sicherer sein, das stimmt, ich denke, ich entscheide mich für 2., mal schauen.

Vielen Dank nochmal,


Marius
 
Zurück