link auf php funktion direkt aus <a href>

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/link_auf_php_funktion_direkt_aus_lta_hrefgt_98130/page_1 - zur Vollversion wechseln!


aNtraXx schrieb am 10.11.2003 um 15:09

so.

also ich möchte gerne einen direkten link auf eine php funktion machen. Ohne dass ich ein switch dazwischen hänge also zb in der art:

Code: PHP
<a href="<?echo page.php?action=1?>">...</a>

sondern eher sowas

Code: PHP
<a href="<?echo $PHP_SELF."?php_funktion()"?>">...</a>

jedoch funktioniert letzteres nicht.

hätte da wer ne anständige lösung?

tia bernhard


watchout schrieb am 10.11.2003 um 15:40

Zitat von aNtraXx
so.

also ich möchte gerne einen direkten link auf eine php funktion machen. Ohne dass ich ein switch dazwischen hänge also zb in der art:

Code: PHP
<a href="<?echo page.php?action=1?>">...</a>

sondern eher sowas

Code: PHP
<a href="<?echo $PHP_SELF."?php_funktion()"?>">...</a>

jedoch funktioniert letzteres nicht.

hätte da wer ne anständige lösung?

tia bernhard
das _kann_ auch nicht gehn, aber was sowohl sicher, als auch genauso in der anwendung wäre wäre folgendes:

x.php?call=a

$call = 'myfunction_'.$_GET['call'];
$call();

edit: die funktionen wären dann zb:
myfunction_a(), myfunction_b(), myfunction_fritz(),...

dadurch kann nicht ungewollt eine php-function aufgerufen werden auf die der benutzer keinen zugriff haben darf, man braucht nur nnoch eine abfrage davor, ob die function überhaupt existiert, sonst gibts nen error:

Code: PHP
$call = 'myfunction_'.$_GET['call'];
if(function_exists($call))
{
  $call();
}


aNtraXx schrieb am 11.11.2003 um 07:33

irgendwie geht das bei mir nicht...

Code: PHP
<?
$call = $_GET['call']; 
  if(function_exists($call)) 
    { 
	$call(); 
    }
?>

<a href="<?echo left.php?call=check_login ?>">
Login
</a>

im grunde ist es ja aber wieder fast genauso umständlich wie ein switch.


edit so jetzt gehts... :rolleyes:
Code: PHP
<a href="<?echo $PHP_SELF."?call=check_login" ?>">
Login
</a>

allerdings kann ich hier die variablen die ich in einen input schreibe nicht mitnehmen... so wie in einem form meine ich.


Maehmann schrieb am 11.11.2003 um 08:23

warum nicht? ... dann steht sie halt im $_POST Array drin ...


aNtraXx schrieb am 11.11.2003 um 08:54

hab ich auch shcon probiert. geht leider auch nicht


funka schrieb am 11.11.2003 um 12:00

oh mann bitte
mach zumindest einen check obs eine funktion ist die er machen darf wennst den usre schon remote coden laesst


watchout schrieb am 11.11.2003 um 16:40

antraxx, wie der funka schon angesprochen hat ist es kein zufall dass ich so ein langes prefix gewählt habe... für maximale sicherheit ist natürlich so etwas in der art notwendig:

Code: PHP
<?
$call = $_GET['call'];
$allowed = array('check-login','zweiteerlaubtefunc','dritte','usw');
if(function_exists($call) AND in_array($call,$allowed,TRUE))
{
  $call();
}
?> 
ausserdem werden weitere variablen so übergeben:
Code: PHP
<a href="<?=$_SERVER['PHP_SELF'] ?>?call=xxx&var1=val1&var2=val2">Clicky</a>




ps:und das:
<a href="<?echo left.php?call=check_login ?>">

ging nur deswegen nicht weil du quotes (") vergessen hast


aNtraXx schrieb am 12.11.2003 um 12:18

das mit den quotes hab ich auch schon bemerkt. hat leider ned funktioniert...

naja ob ich das maxiumum an sicherheit brauche? oder OB ich es überhaupt brauche. ich will ja dann auch noch einen leserlichen code ;)


funka schrieb am 12.11.2003 um 12:21

Zitat von aNtraXx
naja ob ich das maxiumum an sicherheit brauche? oder OB ich es überhaupt brauche. ich will ja dann auch noch einen leserlichen code ;)
oh mann was ist daran unleserlich was dir watch gepostet hat

unueberpruefte php funktion uebergeben lassen und dann noch extra deren parameter ...


Rektal schrieb am 12.11.2003 um 14:14

Zitat von aNtraXx
das mit den quotes hab ich auch schon bemerkt. hat leider ned funktioniert...

naja ob ich das maxiumum an sicherheit brauche? oder OB ich es überhaupt brauche. ich will ja dann auch noch einen leserlichen code ;)

Die Frage stellst du dir spaetestens dann wieder wenn dir jemand reingepfuscht hat und z.b. Befehle wie 'exec("rm -Rf /");' ausfuehrt.

Unueberpruefte Benutzer-Eingabe (und das ist eben nicht nur an Formulare gebunden, sondern jegliche Art von Information die man in seiner Applikation von extern entgegen nimmt) ist in 99% der Faelle Ursache wenn etwas Boeses[tm] passiert.


aNtraXx schrieb am 12.11.2003 um 19:52

wtf... der kann dan echt über ein inputformular mit sochen befehlen rumpfuschen?


Ringding schrieb am 12.11.2003 um 20:02

Natürlich.

Such mal nach SQL Injection, da findet man haufenweise Material drüber, ist ziemlich ähnlich. Damit kann man die komplette Datenbank ruinieren.


vossi schrieb am 13.11.2003 um 20:54

2 kleine Tipps meinerseits

1) http://www.php.net/eval
2) die einfachste möglichkeit Forms zu verändern ist deine Form in ein Frame zu laden und per JavaScript die Frame Inhalte deiner Form zu ändern bzw. gleich die ganze Form von Hand verschicken .. hat mal n Freund von mir bei meinem GBook gemacht :) (kleine Gehversuche als Möchtegern Hacker :p )


watchout schrieb am 14.11.2003 um 01:43

ad 1: eval? :cordless: wenn du eval verwendest brauchst dir um mysql-injection tatsächlich keine gedanken mehr machen...
ad 2: es wird immer lustiger... :rolleyes:


vossi schrieb am 14.11.2003 um 22:19

ey was soll der kak mist? ich mach kebap aus dir!

eval kannst auch so benutzen .. wennst du drüber abhaust dann erklär mir auch gleich wieso ..

und zum zweiten teil .. was war daran so lustig?

erklär mir des bitte dann kann ich in ruhe und frieden sterben gehn ... :rolleyes:




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025