URL: https://www.overclockers.at/coding-stuff/php_auf_funktionen_verlinken_61685/page_1 - zur Vollversion wechseln!
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!
Zitat von grOOvekill@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>");
Zitat von VivoGanz 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>";
ähh... ich glaube hier wird total falsch vorgegangen - normalerweise passiert das in etwa so:
Code:<? 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; } ?>
Zitat von grOOvekill@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>");
Code: PHPecho "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>";
ich glaub, das ist nicht was er will - er will die funktion beim klick aufrufen nicht den return-wert als HREF einsetzen.
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.
Zitat von grOOvekill@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?
ich täts so (oder so ähnlich) machen:Zitat von grOOvekill@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 frag mich aber mal nicht, wofür man sowas überhaupt brauchtCode: PHP// 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>'; } }
Zitat von atroxähh... ich glaube hier wird total falsch vorgegangen - normalerweise passiert das in etwa so:Code:<? 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; } ?>
meine lösung is halt eleganterZitat von MaehmannAlso meiner Meinung nach, sollte das die Lösung des Problems sein ... nur halt statt echo $var; einfach die function aufrufen ...
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 gedachtZitat von atroxum 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])) {
...
}
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025