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?
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 ()).
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
}
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.
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>
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
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
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.
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>
Cela devrait fonctionner aussi bien
<a href="#" onclick="callFunction();">Submit</a>
<script type="text/javascript">
function callFunction()
{
<?php require("functions.php"); ?>
}
</script>
Merci,
cowtipper