grOOvekill@
LegendVienna Badass
|
Hallo!
Habe folgendes vor: In einem Skript befinden sich beispielsweise 10 Funktionen. Diese Funktionen soll man in einer Startseite anhand von Links aufrufen können. Die Funktionen befinden sich aber alle in einem einzigen Skript. Nachdem jede Funktion ausgeführt wurde und ein Ergebnis angezeigt hat, soll darunter wieder ein Link zur Verfügung stehen, der mich zur Hauptseite zurückbringt, die alle Funktionslinks beinhaltet.
Ich hab's auf diese Art probiert, aber hat nicht hingehauen:
echo ("Eine der Schaltflächen klicken um die jeweilige Funktion aufzurufen:<br>"); echo ("<a href=\"function1($var1)\">Funktion 1</a>"); echo ("<a href=\"function2($var1,$var2)\">Funktion 2</a>"); echo ("<a href=\"function3($var1,$var3)\">Funktion 3</a>");
Hab ich irgendwelche Parameter vergessen oder wie geht das? <?php echo $PHP_SELF ?> könnte da ja möglicherweise auch helfen, oder nicht?
Danke für Eure Hilfe!
Bearbeitet von grOOvekill@ am 06.01.2003, 13:05
|
Vivo
Dreamworker
|
echo ("<a href=\"function1($var1)\">Funktion 1</a>"); echo ("<a href=\"function2($var1,$var2)\">Funktion 2</a>"); echo ("<a href=\"function3($var1,$var3)\">Funktion 3</a>"); Ganz spontan würd ich mal sagen der \ gehört erst nach dem " ... : echo "<a href=\".function1($var1)." \ >Funktion 1</a>"; echo "<a href=\".function2($var1,$var2)." \ >Funktion 2</a>"; echo "<a href=\"function3($var1,$var3)." \ >Funktion 3</a>"; bzw. würd ich den Backslahs ganz weglassen ... Aber sonst seh ich da keinen Fehler ... gib einfach mal die Werte die von den Funktionen geliefert werden mit einem echo aus .. dann siehst ja ob das sonst richtig funzt ...
Bearbeitet von Vivo am 06.01.2003, 14:01
|
grOOvekill@
LegendVienna Badass
|
Ganz spontan würd ich mal sagen der \ gehört erst nach dem " ... :
echo "<a href=\".function1($var1)."\ >Funktion 1</a>"; echo "<a href=\".function2($var1,$var2)."\ >Funktion 2</a>"; echo "<a href=\"function3($var1,$var3)."\ >Funktion 3</a>"; Hm, die /'s sind ja lediglich da um die "'s verwenden zu können. Ich denke nicht, daß die da eine Rolle spielen. Aber wenn ich richtig gesehen habe, verwendest du vor und nach function einen Punkt. Mal sehen, ob das was hilft. oder war das ein irrtum?
|
atrox
in fairy dust... I trust!
|
ähh... ich glaube hier wird total falsch vorgegangen - normalerweise passiert das in etwa so: <?
switch ($action) {
case function1:
echo "ich bin funktion 1";
echo $var1;
echo $var2;
break;
case function2:
....
break;
default:
echo "<a href=\"{$SCRIPT_NAME}?action=function1&var1=xxxx&var2=yyyy\">f1</A>";
echo "<a href=\"{$SCRIPT_NAME}?action=function1&var1=xxxx\">f2</A>";
break;
}
?>
|
Philipp
Here to stay
|
echo ("Eine der Schaltflächen klicken um die jeweilige Funktion aufzurufen:<br>"); echo ("<a href=\"function1($var1)\">Funktion 1</a>"); echo ("<a href=\"function2($var1,$var2)\">Funktion 2</a>"); echo ("<a href=\"function3($var1,$var3)\">Funktion 3</a>"); Vom Syntax korrekt wäre: echo "Eine der Schaltflächen klicken um die jeweilige Funktion aufzurufen:<br />";
echo "<a href=\"".function1($var1)."\">Funktion 1</a>";
echo "<a href=\"".function2($var1,$var2)."\">Funktion 2</a>";
echo "<a href=\"".function3($var1,$var3)."\">Funktion 3</a>";
Was wird das eigentlich?
|
atrox
in fairy dust... I trust!
|
ich glaub, das ist nicht was er will - er will die funktion beim klick aufrufen nicht den return-wert als HREF einsetzen.
|
Guest
Deleted User
|
mach eine klasse und dann schau dir mal get_class_methods() an dann machst in der Datei $class->$action($params); get_class_methods brauchst zur ausgabe der liste und zur validierung des requests.
|
Vivo
Dreamworker
|
Hm, die /'s sind ja lediglich da um die "'s verwenden zu können. Ich denke nicht, daß die da eine Rolle spielen. Aber wenn ich richtig gesehen habe, verwendest du vor und nach function einen Punkt. Mal sehen, ob das was hilft. oder war das ein irrtum? Wenn du im String statt den " ein ' hernimmst, hast du das nicht nötig ... Aber stimmt ... da oben hab ich wirklich was vergeigt
|
watchout
Legendundead
|
Hallo!
Habe folgendes vor: In einem Skript befinden sich beispielsweise 10 Funktionen. Diese Funktionen soll man in einer Startseite anhand von Links aufrufen können. Die Funktionen befinden sich aber alle in einem einzigen Skript. Nachdem jede Funktion ausgeführt wurde und ein Ergebnis angezeigt hat, soll darunter wieder ein Link zur Verfügung stehen, der mich zur Hauptseite zurückbringt, die alle Funktionslinks beinhaltet.
Ich hab's auf diese Art probiert, aber hat nicht hingehauen:
echo ("Eine der Schaltflächen klicken um die jeweilige Funktion aufzurufen:<br>"); echo ("<a href=\"function1($var1)\">Funktion 1</a>"); echo ("<a href=\"function2($var1,$var2)\">Funktion 2</a>"); echo ("<a href=\"function3($var1,$var3)\">Funktion 3</a>");
Hab ich irgendwelche Parameter vergessen oder wie geht das? <?php echo $PHP_SELF ?> könnte da ja möglicherweise auch helfen, oder nicht?
Danke für Eure Hilfe! ich täts so (oder so ähnlich) machen: // testvariablen
$var1=$var2=$var3=$var4=$var5='dreck';
// die ausgabe...
echo ('Eine der Schaltflächen klicken um die jeweilige Funktion aufzurufen:<br>');
echo ("<a href=\"?f=function1&args[0]=$var1\">Funktion 1</a><br>");
echo ("<a href=\"?f=function2&args[0]=$var2&args[1]=$var3\">Funktion 2</a><br>");
echo ("<a href=\"?f=function3&args[0]=$var4&args[1]=$var5\">Funktion 3</a><br><br>");
// aufrufteil...
if(isset($_GET['f']))
{
$ret = $_GET['f']($_GET['args']);
}
// funktionen:
function function1($x)
{
echo 'function 1<br>';
}
function function2($x)
{
echo 'function 2<br>';
foreach($x as $dummy)
{
echo $dummy.'<br>';
}
}
function function3($x)
{
echo 'function 3<br>';
foreach($x as $dummy)
{
echo $dummy.'<br>';
}
}
ich frag mich aber mal nicht, wofür man sowas überhaupt braucht
|
Maehmann
OC Addicted
|
ähh... ich glaube hier wird total falsch vorgegangen - normalerweise passiert das in etwa so:
<?
switch ($action) {
case function1:
echo "ich bin funktion 1";
echo $var1;
echo $var2;
break;
case function2:
....
break;
default:
echo "<a href=\"{$SCRIPT_NAME}?action=function1&var1=xxxx&var2=yyyy\">f1</a>";
echo "<a href=\"{$SCRIPT_NAME}?action=function1&var1=xxxx\">f2</a>";
break;
}
?>
Also meiner Meinung nach, sollte das die Lösung des Problems sein ... nur halt statt echo $var; einfach die function aufrufen ...
|
watchout
Legendundead
|
Also meiner Meinung nach, sollte das die Lösung des Problems sein ... nur halt statt echo $var; einfach die function aufrufen ... meine lösung is halt eleganter ich muss zwar zugeben, sie bietet u.u. sicherheitsrisiken, aber sie trifft genau die anforderung: über einen link eine funktion aufrufen.... muss mal probieren, ob man exec('format c:') ausführen kann
|
atrox
in fairy dust... I trust!
|
um jeden versuch der absicherung von vorherein zu untergraben, könnte man den parameter auch gleich an eval() übergeben btw.. isset funktioniert nicht auf funktionen, man muß function_exists() verwenden. einer von vielen wegen, wie man einen filter machen könnte bevor man die funktion direkt aufruft, wäre: if (in_array($_GET[f],array("func1","func2",...)) && functions_exists($_GET[f])) { ... }
|
watchout
Legendundead
|
um jeden versuch der absicherung von vorherein zu untergraben, könnte man den parameter auch gleich an eval() übergeben
btw.. isset funktioniert nicht auf funktionen, man muß function_exists() verwenden.
einer von vielen wegen, wie man einen filter machen könnte bevor man die funktion direkt aufruft, wäre:
if (in_array($_GET[f],array("func1","func2",...)) && functions_exists($_GET[f])) { ... } ah - an eval hab ich garnicht gedacht - verzeih mir meine nachlässigkeit isset() sollte nur überprüfen, ob die variable ('f') überhaupt existiert, was ja bei get-variablen nich wirklich zwingend ist, oder? function_exists dürfte imho ebenfalls einen fehler ausgeben, wenn die übergabevariable eben keine ist... ich will mich jetzt aber nich näher damit beschäftigen... es ist halt eine gewaltige sicherheitslücke.... ps: imho wäre noch eine möglichkeit objekte zu verwenden...
|