0

私はPHPにはかなり慣れていませんが、今までうまく機能していた方法を見つけようとしています。

問題は次のとおりです。リンクが 2 つある Web サイトがあります。両方とも同じ 2 番目の Web サイトにリダイレクトする必要がありますが、クリックしたリンクによっては、一部の値が変わる必要があります。これにはPHPセッションを使用しようとしていました。

これまでのコードは次のとおりです。

リンク 1:

<a href="<? echo $link ?>" class="helsinki" onclick="<? $_SESSION['clicked']= "helsinki"; ?>"^^Helsinki^^</a>

リンク 2:

<a href="<? echo $link ?>"  class="seattle" onclick="<? $_SESSION['clicked']= "seattle"; ?>">^^Seattle^^</a>

次に、次のようにクリックされたリンクを読み取ろうとすると、次のようになります。

<? if(isset($_SESSION['clicked']))
        echo "clicked ". $_SESSION['clicked'];
?>

いつも「Seattle」と表示されており、Helsinki は表示されませんが、(と思っていた) Seattle のリンクをクリックすると、Seattle と入力しました。どうやらそうではないようです...ここで誰か助けてもらえますか?

4

6 に答える 6

1

これが役立つかどうかはわかりませんが、「リダイレクター」を作成できます。ユーザーを最終ページにリダイレクトすると同時にセッションを変更するサーバー側のページに移動します。

ページ:

<a href="redirector.php?link=helsinki"> ... </a>
<a href="redirector.php?link=seattle"> ... </a>

のコードredirector.php:

<?php

session_start();
// determine where to redirect user (could be done with database or array of options)
switch ($_GET['link']) {
    case 'helsinki':
        header('Location: /link/to/helsinki');
        break;

    case 'seattle':
        header('Location: /link/to/seattle');
        break;

    default:
        return;
}
$_SESSION['clicked'] = $_GET['link'];
于 2012-11-26T13:04:46.840 に答える
1

ちょっと待ってください。PHP は「サーバー側」、javascript は「クライアント側」です。つまり、JavaScript の前に常に PHP を実行します。

あなたが達成しようとしていることは、GET変数で簡単に行うことができます:

<a href="<?= $link ?>?city=seattle">^^Seattle^^</a>
<a href="<?= $link ?>?city=helsinki">^^Helsinki^^</a>

2 番目のサイトでは、パラメータの値を取得できます。

$city = $_GET['city'];
于 2012-11-26T13:01:20.537 に答える
0

Javascript と PHP を混同しています。

PHP はサーバー側です。つまり、すべての PHP コードはサーバー側で解析および実行され、クライアント送信されます。

だからあなたが書くなら

line #1: <a href="<? echo $link ?>"  class="helsinki" onclick="<? $_SESSION['clicked']= "helsinki"; ?>">^^Helsinki^^</a>

その後

line #2: <a href="<? echo $link ?>"  class="seattle" onclick="<? $_SESSION['clicked']= "seattle"; ?>">^^Seattle^^</a>

の値$_SESSION['clicked']は常に最初に "Helsinki" (1 行目) ですが、すぐに "Seattle" で上書きされます (2 行目)。

スクリプトで達成したいことを達成するには、たとえば次のようにします。

<a href="?location=helsinki" class="helsinki">^^Helsinki^^</a>
<a href="?location=seattle" class="seattle">^^Seattle^^</a>

次に、送信された変数を PHP 変数からキャッチします$_GET

if (isset($_GET['location'])) {
    if ($_GET['location'] == "helsinki") {
        // Whatever
    }
    elseif ($_GET['location'] == "seattle") {
        // You want
    }
}
于 2012-11-26T13:01:36.853 に答える
0
<a href="<? echo $link.'?location="helsinki"'; ?>">"^^Helsinki^^</a>
<a href="<? echo $link.'?location="seattle"'; ?>">"^^Seattle^^</a>

他のページでヘルシンキシアトル$_GET['location']の天気を確認するために使用します。 両方のリンクで同じである必要があります。$link

また、PHP (サーバー側) と Javascript (クライアント側) を混在させることはできません。それがなぜなのかを調べてください。

于 2012-11-26T13:01:45.283 に答える