URL Aufruf mit "alten" Paramtern

  • Hallo,

    ich hab ein hoffentlich kleines Problem. Sämtliche Google-Exzesse haben nichts gebracht :P
    Ich habe eine URL die mehrere Paramter besitzt:

    index.php?param1=wert1&param2=wert2


    Wenn ich nun einen Link aufrufe soll ein neuer Paramter hinten ran gesetzt werden:

    index.php?param1=wert1&param2=wert2&param3=wert3


    Wie kann ich dies realisieren?

    Wenn ich es so formuliere

    HTML
    <a href="&param3=wert3">Link</a>

    funktioniert es nicht.

    Vielen Dank im Vorraus!

    Mit freundlichen Grüßen
    XantypiaxD

  • Sämtliche Google-Exzesse haben nichts gebracht :P


    :( Kopfschüttel :(

    PHP
    <?php
       $queryString = (strlen($_SERVER['QUERY_STRING'])) ? ("?" . $_SERVER['QUERY_STRING'] . "&neuerWert=blub") : "?neuerWert=blub";
    
    
       echo "<a href='index.php" . $queryString . "'>Link</a>";
    ?>

    Zur Not hätte man auch eine Schleife über $_GET bauen können!!!

  • Ich hätte da so gemacht:

    HTML
    <a href="#&neuerWert=blub">klick mich</a>


    Das setzt aber vorraus, dass schon parameter vorhanden sind. Daher kann man es theoretisch auch so machen

    PHP
    <a href="<?php echo count($_GET)==0 ? '?' : '&'; ?>neuerWert=blub">klick mich</a>


    Und entgeht damit eben einer XSS gefahr.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Und wie werden dabei die vorhandenen Parameter drangehängt? Garnicht, würde ich sagen.

  • Oh, ja beim zweiten muss es so sein:

    PHP
    <a href="#<?php echo count($_GET)==0 ? '?' : '&'; ?>neuerWert=blub">klick mich</a>

    EDIT:
    Omg, heute steh ich echt aufm schlauch.

    So stimmts jetzt:

    PHP
    <a href="index.php?<?php foreach ($_GET as $k=>$v) echo $k."=".$value.'&'; echo (count($_GET)==0 ? '?' : ''); ?>"neuerWert=value>klick mich!</a>

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

    2 Mal editiert, zuletzt von Tobse (5. April 2012 um 18:04)

  • :( Kopfschüttel :(

    PHP
    <?php
       $queryString = (strlen($_SERVER['QUERY_STRING'])) ? ("?" . $_SERVER['QUERY_STRING'] . "&neuerWert=blub") : "?neuerWert=blub";
    
    
       echo "<a href='index.php" . $queryString . "'>Link</a>";
    ?>

    Zur Not hätte man auch eine Schleife über $_GET bauen können!!!


    Danke :) oder ist das von Tobse sicherer? bzw. bei dem von Tobse wird dann ja auch wenn ich den Link schon betätigt habe und nochmal auf den selben Link drücke der selbe Parameter angehängt z.B. so ?param=wert&param=wert2

    Aber dass kann ich mir ja noch selber basteln. Aber was von beiden ist sicherer? bzw. was ist performance technisch besser?

    3 Mal editiert, zuletzt von XantypiaxD (6. April 2012 um 12:43)

  • Performance Technisch ist das von Bandit sicherer. Was die Sicherheit angeht, kannst du wohl mit beiden einem XSS-Angriff zum Opfer fallen.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Performance Technisch ist das von Bandit sicherer. Was die Sicherheit angeht, kannst du wohl mit beiden einem XSS-Angriff zum Opfer fallen.


    ein htmlspecialchars() könnte man ja noch hinzufügen ;)

    PHP
    <?php
       $queryString = (strlen($_SERVER['QUERY_STRING'])) ? ("?" . $_SERVER['QUERY_STRING'] . "&neuerWert=blub") : "?neuerWert=blub";
    
    
       echo "<a href='index.php" . htmlspecialchars($queryString) . "'>Link</a>";
    ?>

    Gruß crAzywuLf :D