ユーザーがリンクをクリックしたときに、ページをリダイレクトせずに PHP コードを実行したいと考えています。これは可能ですか
<a href=""></a>
またはJavaScriptのonclickイベントで?
ユーザーがリンクをクリックしたときに、ページをリダイレクトせずに PHP コードを実行したいと考えています。これは可能ですか
<a href=""></a>
またはJavaScriptのonclickイベントで?
ええ、ページのAJAXロードを実行してからfalseを返すonclickによってトリガーされるjavascript関数が必要です。これにより、ブラウザーでリダイレクトされなくなります。プロジェクトで許容できる場合は、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() メソッドを使用します)。
他の人が示唆しているように、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
}
この投稿が古いことは知っていますが、答えを追加したかっただけです。
指示なしでユーザーをログアウトすると言いました...このメソッドはリダイレクトしますが、ユーザーを元のページに戻します!これが私の実装です:
// 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からファイル名を取得するためのスクリプトはたくさんあります。
ハッピーコーディング!
アレックス
AJAX を使用しない限り、ユーザーがページを離れずにリンクをクリックしたときに PHP を実行することはできません。PHP はサーバーサイドのスクリプト言語です。つまり、ブラウザがページを表示した瞬間、そこには PHP が含まれていません。
Javascript とは異なり、PHP は完全にサーバー上で実行されるため、ブラウザーは、背後でそれらを噛んだ場合、それを解釈する方法を知りません。PHP コードを呼び出す唯一の方法は、ページを更新するか、javascript を使用してページを取得することにより、ページ リクエストを作成することです。
AJAX ソリューションでは、基本的に、ページは JavaScript を使用して、ドメイン上の別のページにページ リクエストを送信します。Javascript はecho
、応答で決定したものを取得し、それを解析して、そこから必要なことを実行できます。応答を作成しているときに、データベースの更新などのバックエンドも実行できます。
あなたはリダイレクトせずに言った。その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>
試してみてください :) 気に入っていただければ幸いです
誰もが投稿で提案しているように、唯一のより良い方法は AJAX です。別の方法は、以下のような IFrame を使用することです。
<iframe name="f1" id="f1"> </iframe>
<a href='yourpage.php' target='f1'>Click </a>
これで、IFrame で出力が得られます (IFrame をページ内の必要な場所に配置したり、イベントを非表示にしたり、スクリプトからの結果を隠したりできます)。
Ajax 以外のソリューションがこれより優れていることを願っています。
これもうまくいくはずです
<a href="#" onclick="callFunction();">Submit</a>
<script type="text/javascript">
function callFunction()
{
<?php require("functions.php"); ?>
}
</script>
ありがとう、
カウチッパー