-2

これが機能しない理由がよくわかりません。正しいヘッダーに戻されていますが、アイテムはまだ配列内にあります。

配列コードからの削除は次のとおりです。

<?php
session_start();
if ( !isset($_SESSION['username']) )
{
  header("Location:loginform.php");
  exit();
}

foreach ($_SESSION['list'] as $key => $disk)
{
  if (($_SESSION['list'][$key]['bookisbn']) - ($_GET['bookisbn'])== 0)
  {
    unset($_SESSION['list'][$key]);
    break;
  }
}
header("Location: ".$_GET['location']);
exit();
?>

あなたが提供できるどんな助けにも感謝します

4

4 に答える 4

0

これは推測にすぎませんが、問題は次の事実にある可能性があります。

$_GET['bookisbn']

文字列として扱われています。したがって、int にキャストすると、if ステートメントは true を返し、配列からアイテムを削除します。

このコードを紹介します。

// Casting the ISBN to an integer here
$bookISBN = (int) $_GET['bookisbn'];

if( ($_SESSION['list'][$key]['bookisbn'] - $bookISBN) == 0 ) {
    // Unset item
}
于 2012-04-09T14:18:39.963 に答える
0

ヘッダーの前に session_write_close() を試してください。保存されていない可能性があります。

これを行うこともできます:

$mydata = $_SESSION['list'] ;

//do something with $mydata

$_SESSION['list'] = $mydata;

他のタイプのエラーがある場合、コードが読みやすくなり、この方法で同じ間違いを繰り返さなくなります。

于 2012-04-09T14:19:07.550 に答える
0

私はArtragisを聞くだけでなく、これも試してみます:

各変数を括弧で囲んでいますが、実際にはゼロに等しくなければならないのは減算です。したがって、代わりに:

if (($_SESSION['list'][$key]['bookisbn']) - ($_GET['bookisbn'])== 0)
{
    unset($_SESSION['list'][$key]);
    break;
}

試す:

if (($_SESSION['list'][$key]['bookisbn'] - $_GET['bookisbn']) == 0)
{
    unset($_SESSION['list'][$key]);
    break;
}

編集:

また、前述の他のポスターの 1 つと同様に、Session 変数と GET 変数の両方を INT としてキャストします。

于 2012-04-09T14:19:32.697 に答える
-1

未設定の回線が到達可能かどうかをデバッグしてテストする必要があります。

デバッグする必要があるということは、すべてのプログラムのステップとすべての変数を確認する必要があるということです。
未設定の行が到達可能かどうかをテストする必要があります。つまり、未設定の時点で何かをエコーする必要があります。

foreach ($_SESSION['list'] as $key => $disk)
{
  var_dump("---\n",$_SESSION['list'][$key]['bookisbn'],$_GET['bookisbn']);
  var_dump($_SESSION['list'][$key]['bookisbn'] - $_GET['bookisbn']);
  var_dump($_SESSION['list'][$key]['bookisbn'] - $_GET['bookisbn'] == 0);

  if ($_SESSION['list'][$key]['bookisbn'] - $_GET['bookisbn'] == 0)
  {
    unset($_SESSION['list'][$key]);
    var_dump($_SESSION['list']);
    break;
  }
}
//comment out header to prevent moving out of page
#header("Location: ".$_GET['location']);
exit();

このコードを実行して、値のいずれかが間違っているか、または予期しないかどうかを確認してください。

于 2012-04-09T14:35:05.343 に答える