Comment exécuter du code PHP lorsqu'un utilisateur clique sur un lien?

je veux qu'une page lance du code PHP quand un utilisateur clique sur un lien, sans les rediriger. Est-ce possible avec

<a href=""></a>

ou avec l'événement JavaScript onclick?

39
demandé sur chustar 2009-08-15 04:05:18

9 réponses

Oui, vous devez avoir une fonction javascript déclenchée par un onclick qui fait une charge AJAX D'une page et retourne ensuite false, de cette façon ils ne seront pas redirigés dans le navigateur. Vous pouvez utiliser ce qui suit dans jQuery, si cela est acceptable pour votre projet:

<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
function doSomething() {
    $.get("somepage.php");
    return false;
}
</script>

<a href="#" onclick="doSomething();">Click Me!</a>

Vous pouvez aussi faire un post-back si vous avez besoin d'utiliser les valeurs du formulaire (utilisez le $.méthode post ()).

94
répondu Parrots 2009-08-15 00:52:33

comme d'autres l'ont suggéré, utilisez JavaScript pour faire un appel AJAX.

<a href="#" onclick="myJsFunction()">whatever</a>

<script>
function myJsFunction() {
     // use ajax to make a call to your PHP script
     // for more examples, using Jquery. see the link below
     return false; // this is so the browser doesn't follow the link
}

http://docs.jquery.com/Ajax/jQuery.ajax

10
répondu Roy Rico 2016-08-12 12:20:20

Vous ne pouvez pas exécuter PHP quand un utilisateur clique sur un lien sans quitter la page sauf si vous utilisez AJAX. PHP est un langage de script serverside, ce qui signifie que la seconde où le navigateur voit la page, il n'y a pas de PHP.

Contrairement à Javascript, PHP est exécuté complètement sur le serveur, et le navigateur ne sais pas comment l'interpréter si peu sur l'arrière. La seule façon D'invoquer le code PHP est de faire une demande de Page, soit en rafraîchissant la page, soit en utilisant javascript pour aller chercher un page.

dans une solution AJAX, fondamentalement la page utilise javascript pour envoyer une demande de page à une autre page sur votre domaine. Javascript obtient alors tout ce que vous décidez de echo dans la réponse, et il peut analyser et de faire ce qu'il veut à partir de là. Lorsque vous créez la réponse, vous pouvez également faire n'importe quoi comme la mise à jour des bases de données.

4
répondu Tyler Carter 2009-08-15 00:48:51

si vous n'avez pas encore installé jquery (parce que vous n'êtes qu'un débutant), utilisez ce morceau de code:

<a href="#" onclick="thisfunction()">link</a>

<script type="text/javascript">
function thisfunction(){
    var x = new XMLHttpRequest();
    x.open("GET","function.php",true);
    x.send();
    return false;
}
</script>
4
répondu Thornkey 2015-03-19 05:22:54

je sais que ce post est vieux, mais je voulais juste ajouter ma réponse!

Vous avez dit de déconnecter un utilisateur sans le diriger... cette méthode redirige mais renvoie l'utilisateur à la page sur laquelle il était! voici mon oeuvre:

// every page with logout button
<?php
        // get the full url of current page
        $page = $_SERVER['PHP_SELF'];
        // find position of the last '/'
        $file_name_begin_pos = strripos($page, "/");
        // get substring from position to end 
        $file_name = substr($page, ++$fileNamePos);
    }
?>

// the logout link in your html
<a href="logout.php?redirect_to=<?=$file_name?>">Log Out</a>

// logout.php page
<?php
    session_start();
    $_SESSION = array();
    session_destroy();
    $page = "index.php";
    if(isset($_GET["redirect_to"])){
        $file = $_GET["redirect_to"];
        if ($file == "user.php"){
            // if redirect to is a restricted page, redirect to index
            $file = "index.php";
        }
    }
    header("Location: $file");
?>

et voilà!

le code qui obtient le nom du fichier à partir de l'url complète n'est pas une preuve de bogue. par exemple, si les chaînes de requête sont impliquées avec un-escaped'/', elles échoueront.

cependant il y a beaucoup de scripts pour obtenir le nom de fichier à partir de l'url!

Bon Codage!

Alex

3
répondu AlexMorley-Finch 2011-12-08 09:21:47

Vous avez dit sans rediriger. Bien que son un code javascript:

<a href="JavaScript:void(0);" onclick="function()">Whatever!</a>

<script type="text/javascript">
function confirm_delete() {
    var delete_confirmed=confirm("Are you sure you want to delete this file?");

    if (delete_confirmed==true) {
       // the php code :) can't expose mine ^_^
    } else { 
       // this one returns the user if he/she clicks no :)
       document.location.href = 'whatever.php';
    }
}
</script>

faire un essai :) j'espère que vous aimez

2
répondu Louie Jay Jayme 2012-10-17 15:39:48

il y a la seule meilleure façon est AJAX comme tout le monde est Suggérer dans leurs messages. L'alternative est d'utiliser les IFrames comme ci-dessous:

<iframe name="f1" id="f1"> </iframe>

<a href='yourpage.php' target='f1'>Click </a>

Maintenant vous obtiendrez la sortie dans IFrame (vous pouvez placer IFrame partout où vous avez besoin dans la page ou l'événement le cacher et le résultat du script).

j'Espère pour les non solution Ajax c'est mieux.

1
répondu AjayR 2012-01-18 19:50:11

soit envoyer l'utilisateur à une autre page qui le fait

<a href="exec.php">Execute PHP</a>

ou le faire avec ajax

<script type="text/javascript">
// <![CDATA[
    document.getElementById('link').onclick = function() {
        // call script via ajax...
        return false;
    }
// ]]>
</script>
...
<a href="#" id="link">Execute PHP</a>
0
répondu Tom 2009-08-15 01:38:08

Cela devrait fonctionner aussi bien

<a href="#" onclick="callFunction();">Submit</a>

<script type="text/javascript">

function callFunction()
{
  <?php require("functions.php");  ?>
}
</script>

Merci,

cowtipper

-1
répondu John 2011-07-01 20:41:20