2016-10-18 1 views
-1

には、このようなセッションを入れてください、私は従って2つのファイルを持っていると私はセッションを使用して2つのファイル間の情報を送信したいと思いますが、私は右の結果を得ていないのです。はどのように配列

<?php 

session_start(); 

for ($i=0; $i<=2; $i++) { 

    echo ("<p><a href='getpage.php?row=$item_title' target='_blank'>" . $item_title . "</a>"); 
    echo ("<br>"); 
    echo ($item_desc . "</p>"); 

    $_SESSION['item_link'] = $item_link; 
    $_SESSION['item_title'] = $item_title; 

} 

getpage.php

<?php 

session_start(); 

if (isset($_SESSION['item_link']) && isset($_SESSION['item_title'])) { 

    $item_link = $_SESSION['item_link']; 
    $item_title = $_SESSION['item_title']; 

    header("Location: $item_link");  
} 

たしかし、私は、リンクをクリックして、クリックしてgetpage.phpファイルを実行すると、最後のitem_linkを取得しておいてください。ここではファイル

index.phpですインデックスファイルからのリンク。リンクをクリックした後、セッションで最後の値を取得するだけでなく、セッションを配列に配置するにはどうすればよいですか?

+1

あなたが書く場合はPHPには、以下の組み込みツールを提供しますループ内の同じ変数は、最後の値だけが残ります。 –

+0

ここで、 '$ item_link'を定義していますか?索引に入れるPHPと同じインデックスを持つforループ内でセッションを保存する理由は何ですか? – devpro

+0

同じコンテンツを3回出力する以外にindex.phpのループは何ですか?なぜ両方のパラメータとセッションで同じ情報を渡すのですか? –

答えて

0

これは、クイックドライブバイ試み答えになっていますが、その後、あなたのセッション変数は、それ自体が配列になります

$_SESSION['item_link'][] = $item_link; 
    $_SESSION['item_title'][] = $item_title; 

を試してみてください。

+0

getpage.phpを編集することはできませんか? –

+0

@KirkBrown:はい、もちろん、getpageファイルも変更する必要があります – devpro

+0

あなたを気にして申し訳ありませんが、どのように見えるか教えてください。 –

0

私はあなたのコードは、基礎となる力学上の誤解に基づいている疑いがあります。ファイルは静的な資産だけで、何もしませんが何もしませんが、ディスクスペースを使用するまでディスクスペースを使用します。

echo ("<p><a href='getpage.php?row=$item_title' target='_blank'>" . $item_title . "</a>"); 

は...どちらもファイルを実行しないでも、それをメモリにロードするか、またはそれに変数の任意のリソースを割り当てます。

は、単にファイルの名前を印刷します。それは単なるテキストです。 for-each-fileループで定義された変数はファイルに送信されません。ユーザーがリンクをクリックすると、ファイル内のソースコードが最終的に実行されます。

第二に、それは、PHPのセッションはとにかくどのように動作するかではありません。セッションデータは特定のファイルには添付されません。セッション全体の情報です。

URLパラメータを部分的に認識しているようです。これは、機密性がないか、または長すぎる限り、情報を送信する適切な方法です。あなたはURLで$item_titleを渡す場合:

echo ("<p><a href='getpage.php?row=$item_title' target='_blank'>" 

...それは$_GET['row']で入手可能な権利になるでしょう。セッションをいじる必要はありません:

$_SESSION['item_link'] = $item_link; // What for? 

なく、少なくとも最後に、あなたはあなたを確保する必要があります(たとえば、URLやHTML文書として)計算機によって消費されることを目指しています文字列にテキストを挿入するときデータ形式を破らないでください。 HTMLの場合rawurlencode()

  • URLについて

    だからあなたのエコーは次のようになります。

    echo ("<p><a href='getpage.php?row=" . htmlspecialchars(rawurlencode($item_title)) . "' target='_blank'>"