2011-01-31 15 views
10

をクリックしたときに、私は次のような問題を持ってセッション変数を設定する方法...私は通常のリンクをクリックするとセッション変数を設定するように:私の研究は指摘しているようだ<a>リンクに

<a href="home" name="home">home</a> 

PHPがセッション変数を設定するような方法でクリックイベントに追いつくことはできないということです。

私はそれがAjaxで可能だと信じていますが、どうですか?私のリンクはどのように見えますか?短い中のSO

$_SESSION['link'] = home; 

:HTML内のリンクをクリックすると、セッション変数が設定されている必要があり、セッション変数を設定する
は次のようになります。
どうすればいいですか?

PS:私はAjaxに詳しくは分かりませんが、私は追いつきます。

EDIT:リンクは同じページを参照します。また、 "home.php?link = X"のようなURLを避けたいと思います。
それ以外の方法で行うことはできない場合は、あまりにも悪いです。しかし、解決策があることを願っています。
重要:リンクの名前は$_SESSION['link']

+0

は、だから私は、あなたがリンクをクリックした後に何が起こるのか、混乱しています?セッションを生成してから、セッションIDを返してリンクで使用するか、リンクを実行する前に呼び出しを行うだけですか?これは、セッションタイムアウトを捕まえてログインするためにリダイレクトを使用することを強要しているようです。 –

+0

ここにシナリオがあります:私はhome.phpにいる、私はhome.phpに行くリンクをクリックします。私は、クリックイベントをキャッチし、自分のリンクの名前を私のセッション変数の値にしたいと思います。しかし、リンクはHTML形式なので、クライアント側であり、サーバー側ではありません。 – Mixxiphoid

+0

HTMLはページをリロードしますか?だからあなたは@Brandonがそれを記述する方法でPHPでそれをキャッチすることができます。 – SuperSpy

答えて

10
session_start(); 
    if(isset($_SESSION['current'])){ 
     $_SESSION['oldlink']=$_SESSION['current']; 
    }else{ 
     $_SESSION['oldlink']='no previous page'; 
    } 
    $_SESSION['current']=$_SERVER['PHP_SELF']; 

たぶん、これはあなたが探しているものでしょうか? あなたの元のリンク先ページ(あなたのウェブサイト内)を覚えています。

各ページの上にそのピースを配置します。これは、ページ自体を覚えていないでしょう

if(isset($_SESSION['current']) && $_SESSION['current']!=$_SERVER['PHP_SELF']) 

:あなたはそれは証拠をリフレッシュ "したい場合は、別のチェックを追加することができます

UPDATE:@Brandonとしてほぼ同じことがいえ... ちょうどPHPの変数を使用して、私は、これはセキュリティ上のリスクのように見えますが、知っている正しい行われたときにそうではありません。

<a href="home.php?a=register">Register Now!</a> 

PHP:

if(isset($_GET['a']) /*you can validate the link here*/){ 
    $_SESSION['link']=$_GET['a']; 
} 

でもセッションでGETを保存するのはなぜ?ちょうどそれを使用します。 GETを使用しない理由を教えてください。 «より多くのセキュリティを検証します。 私は多分より良いスクリプトであなたを助けることができます。

+0

問題は、リンクが現在のページを参照するためです。したがって、$ _SESSION ['current']は常にhome.phpになります。私はそのセッション変数を作るためにリンクの名前が必要です。 コードありがとうございました:) – Mixxiphoid

+0

私は、変数とリンクの名前に応じてデータベースから呼び出す必要があるコンテンツを必要とします。ページのリフレッシュのため、リンクをクリックすると、変数は$ _SESSION varでなければなりません。 – Mixxiphoid

+0

私は私のURLを台無しにしたくないので、いくつかのセキュリティ問題のためにGETを避けたい。たぶん、私はそれを使用した後にGETを解除し、ページを再びリフレッシュすることができます...また、これはAjaxでも可能だと思っていましたが、これまでの回答では聞いていません... – Mixxiphoid

2

の値になりますが、別のWebページへのあなたのリンクか?もしそうなら、おそらくあなたはクエリ文字列に変数を入れ、リンク先のページがロードされるときにセッション変数を設定することができます。

ので、リンクは次のようになります。

<a href="home.php?variable=value" name="home">home</a> 

そしてhomgeページには、クエリ文字列を解析し、セッション変数を設定します。 HTMLで

+0

ご返信ありがとうございますが、同じページを参照しています。私は私のポストをより明確にします。 – Mixxiphoid

4

:PHPで次に

<a href="index.php?link=home" name="home">home</a> 

if(isset($_GET['link'])){$_SESSION['link'] = $_GET['link'];} 
+0

私はこれをダウン投票しませんが、私はそれをお勧めしないと言います。それは無害なコードで動作しますが、データベースに触れるものは、クライアントが適切にエスケープする必要があります。 – Jason

10

同じ問題がありました。ハイパーリンクをクリックして別のページにパラメータを渡し、次のページに移動するための値を取得したかったのです(パラメータがURLに格納されているため、GETを使用しません)。

あなたはこれをやりたいと思う理由を理解していない人には、ユーザーに機密情報を見せたくない、またはGETを編集したくないという人がいます。

インターネットを精査した後も、POSTメソッドを使用して通常のハイパーリンクを作成することができなかったようです。

そして、私はユーレカの瞬間を持っていた!! なぜ単にサブミットボタンを通常のハイパーリンクのように見せるためにCSSを使用しないのですか? ...私は隠しフィールドに渡したい値を入れます

私はそれを試して動作します。あなたはここにexapleを見ることができますhttp://paulyouthed.com/test/css-button-that-looks-like-hyperlink.php

フォームの基本的なコードは次のとおりです。

<form enctype="multipart/form-data" action="page-to-pass-to.php" method="post"> 
         <input type="hidden" name="post-variable-name" value="value-you-want-pass"/> 
         <input type="submit" name="whatever" value="text-to-display" id="hyperlink-style-button"/> 
       </form> 

基本的なCSSは次のとおりです。

#hyperlink-style-button{ 
     background:none; 
     border:0; 
     color:#666; 
     text-decoration:underline; 
    } 

    #hyperlink-style-button:hover{ 
     background:none; 
     border:0; 
     color:#666; 
     text-decoration:none; 
     cursor:pointer; 
     cursor:hand; 
    } 
+2

これらのCSS宣言の1つを '#hyperlink-style-button:hover {...}'にしたくありませんか? –

+0

おっと、CSSを投稿に間違ってコピーしました。よく目がく –

関連する問題