Quiero que una página ejecute código PHP cuando un usuario hace clic en un enlace, sin redirigirlo. ¿Es esto posible con¿Cómo ejecuto el código PHP cuando un usuario hace clic en un enlace?
<a href=""></a>
o con el evento javascript onclick?
Quiero que una página ejecute código PHP cuando un usuario hace clic en un enlace, sin redirigirlo. ¿Es esto posible con¿Cómo ejecuto el código PHP cuando un usuario hace clic en un enlace?
<a href=""></a>
o con el evento javascript onclick?
Sí, necesitaría tener una función javascript activada por un clic que hace una carga AJAX de una página y luego devuelve falso, de esa manera no serán redirigidos en el navegador. Se podría utilizar el siguiente en jQuery, si eso es aceptable para su proyecto:
<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>
También podría hacer un post-vuelta si es necesario utilizar valores de la forma (usar el método $ .post()).
No puede ejecutar PHP cuando un usuario hace clic en un enlace sin abandonar la página a menos que utilice AJAX. PHP es un lenguaje de scripting en el servidor, es decir, el segundo que el navegador ve la página, no tiene PHP.
A diferencia de Javascript, PHP se ejecuta completamente en el servidor, y el navegador no sabría cómo interpretarlo si los mordiera en la parte posterior. La única forma de invocar el código PHP es hacer una solicitud de página, ya sea refrescando la página o usando javascript para ir a buscar una página.
En una solución AJAX, básicamente la página usa javascript para enviar una solicitud de página a otra página en su dominio. Entonces, Javascript obtiene lo que usted decida echo
en la respuesta, y puede analizarlo y hacer lo que quiera desde allí. Cuando está creando la respuesta, también puede hacer cualquier cosa de back-end, como actualizar las bases de datos.
"No puede ejecutar PHP cuando un usuario hace clic en un enlace a menos que use AJAX." ¿Eh? –
Exactamente lo que dije. A menos que solicite una nueva página, no puede ejecutar PHP. –
PHP solo se ejecuta cuando se solicitan páginas. –
Como han sugerido otros, use JavaScript para hacer una llamada 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
}
No hay razón para menospreciar al tipo solo porque no usó jQuery. Alguien debería editar la publicación para arreglar el enlace. –
Gracias justin, corrigió el enlace. Acabo de agregar el enlace a jquery, pero no el código real en caso de que no fuera una opción. No todos pueden usar Jquery, sin importar cuánto quieran (¡contratos legales estúpidos!) –
Al menos debe agregar el ejemplo de código AJAX no jquery dentro de su función, ya que solo está documentando la funcionalidad onclick de javascript , que ya conocía: P – Parrots
o bien enviar al usuario a otra página, que lo hace
<a href="exec.php">Execute PHP</a>
o hacerlo con 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>
No es la única mejor manera es AJAX todos son sugerencias en sus publicaciones. La alternativa es usar IFrames, como a continuación:
<iframe name="f1" id="f1"> </iframe>
<a href='yourpage.php' target='f1'>Click </a>
Ahora se va a obtener la salida en el marco flotante (se puede colocar IFrame siempre que se necesite en la página o evento ocultarlo y el resultado de la secuencia de comandos).
Espero que la solución no Ajax sea mejor.
Esto debería funcionar así
<a href="#" onclick="callFunction();">Submit</a>
<script type="text/javascript">
function callFunction()
{
<?php require("functions.php"); ?>
}
</script>
Gracias,
cowtipper
¿Cómo podría un php require() desencadenarse desde un clic de JavaScript? – billrichards
Sé que este post es viejo, pero yo sólo quería añadir mi respuesta!
Dijiste que registrabas a un usuario SIN dirigir ... ¡este método SI redirige pero devuelve al usuario a la página en la que estaba!aquí está mi implementación:
// 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");
?>
y ahí vamos!
el código que obtiene el nombre de archivo de la url completa no es a prueba de errores. por ejemplo, si las cadenas de consulta están involucradas con '/' sin escape en ellas, fallará.
¡Sin embargo, hay muchos scripts para obtener el nombre de archivo de url!
Happy Coding!
Alex
Bien se dijo sin redirigir. Bien es un código 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>
darle una oportunidad :) espero que les guste
por cierto éste whatever
debe prob también devolver falso de la función, por lo que no se sigue el HREF. –
2 años después, ahora me doy cuenta de lo que hace que esta sea una buena respuesta. – chustar
@Parrots: si quiero pasar una identificación a somepage.php, ¿cómo podría lograr esto? Digamos que cambio el enlace "a" a onclick = "doSomething ( Php echo $ id?>);" y ¿cómo puedo pasarlo a la página php? Gracias – nasty