Я хочу, чтобы страница запускала некоторый PHP-код, когда пользователь нажимает на ссылку, не перенаправляя ее. Возможно ли это с
<a href=""></a>
или с событием onclick javascript?
Да, вам нужно иметь функцию javascript, вызванную onclick, которая загружает AJAX страницы, а затем возвращает false, таким образом, они не будут перенаправлены в браузере. Вы можете использовать следующее в jQuery, если это приемлемо для вашего проекта:
<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>
Вы также можете сделать post-back, если вам нужно использовать значения формы (используйте метод $ .post ()).
Как предложили другие, используйте JavaScript для вызова 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 }
Вы не можете запустить PHP, когда пользователь нажимает ссылку, не выходя из страницы, если вы не используете AJAX. PHP – это серверный скриптовый язык, то есть второй, который браузер видит на странице, в нем нет PHP.
В отличие от Javascript, PHP запускается полностью на сервере, и браузер не знает, как интерпретировать его, если он укусил их сзади. Единственный способ вызвать PHP-код – сделать запрос страницы, обновив страницу или используя javascript, чтобы получить страницу.
В решении AJAX в основном на странице используется javascript для отправки запроса страницы на другую страницу вашего домена. Затем Javascript получает все, что вы решите echo
в ответе, и он может анализировать его и делать то, что он хочет оттуда. Когда вы создаете ответ, вы также можете делать любые бэкэнд-файлы, такие как обновление баз данных.
Я знаю, что этот пост старый, но я просто хотел добавить свой ответ!
Вы сказали, чтобы вывести пользователя из системы БЕЗ управления … этот метод перенаправляется, но он возвращает пользователя на страницу, на которой они были! вот моя реализация:
// 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"); ?>
и вот мы идем!
код, который получает имя файла из полного URL-адреса, не является доказательством ошибки. например, если строки запросов связаны с неэкспертированным '/' в них, это не сработает.
Однако есть много скриптов, чтобы получить имя файла из url!
Счастливое кодирование!
Alex
Ну, вы сказали, не перенаправляя. Ну его код 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>
дайте ему попробовать 🙂 надеюсь, вам понравится
Если вы еще не установили jquery (потому что вы просто новичок или что-то еще), используйте этот бит кода:
<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>
Единственный лучший способ – это AJAX, поскольку все предлагают в своих сообщениях. Альтернативой является использование IFrame, как показано ниже:
<iframe name="f1" id="f1"> </iframe> <a href='yourpage.php' target='f1'>Click </a>
Теперь вы получите результат в IFrame (вы можете разместить IFrame везде, где вам нужно на странице или событии, скрыть его и результат от скрипта).
Надежды на решение без Ajax это лучше.
либо отправить пользователя на другую страницу, которая делает это
<a href="exec.php">Execute PHP</a>
или сделать это с помощью 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>
Это должно работать также
<a href="#" onclick="callFunction();">Submit</a> <script type="text/javascript"> function callFunction() { <?php require("functions.php"); ?> } </script>
Благодаря,
cowtipper