Bir php oturum diziden bir değişkeni kaldırmak

5 Cevap php

altında bir oturum değişkenleri eklemek için kullanılan bir php kodu.

    <?php
    session_start();
    if(isset($_GET['name'])) {
        $name = isset($_SESSION['name']) ? $_SESSION['name'] : array();
        $name[] = $_GET['name'];
        $_SESSION['name'] = $name;
    }

if (isset($_POST['remove'])) {

    unset($_SESSION['name']);
}
    ?>
            <pre><?php print_r($_SESSION); ?></pre>
            <form name="input" action="index.php?name=<?php echo $list ?>" method="post">
            <input type="submit" name ="add"value="Add" />
            </form> 
            <form name="input" action="index.php?name=<?php echo $list2 ?>" method="post">
            <input type="submit" name="remove" value="Remove" />
            </form>

i need to remove the variable that is shown in $list2 from the session array when the user wants to remove . But when i unset, all the variables in the array are deleted. Can some one please tell me how can i delete one variable?

Teşekkürler

5 Cevap

if (isset($_POST['remove'])) {
    $key=array_search($_GET['name'],$_SESSION['name']);
    if($key!==false) unset($_SESSION['name'][$key]);
} 

$ _SESSION ['Name'] bir dizi olduğundan, size ilgilendiğiniz isim değeri işaret dizi anahtarı bulmak gerekir

Oturumu kullanımı belirli bir değişkeni kaldırmak için:

session_unregister() (see documentation)

or 

unset($_SESSION['variableName']);

NOTE: This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0.

$ _SESSION ['Isim'] değişkeni bir dizi var mı? Bir dizi içinde belirli bir anahtarı silmek istiyorsanız, aksi takdirde tüm dizi, örneğin sil, unset () çağrısına tam olarak o anahtar başvurmak zorunda

$name = array(0 => 'a', 1 => 'b', 2 => 'c');
unset($name); // deletes the entire array
unset($name[1]); // deletes only the 'b' entry

Snippet'inizde ile bir başka küçük sorun: Bir POST formu ile GET sorgu parametrelerini karıştırma ediyoruz. Eğer gizli bir alanda geçirilen 'isim' ile formları yapamazsınız herhangi bir neden var mı? Bu başka bir yerde $ _REQUEST kullanmak, özellikle de get ve post değişkenleri karıştırmak değil en iyisidir. Sunucunun bir değişik EGPCS 'variables_order' set sipariş var çünkü $ _GET ['name'], $ _POST ['isim'] gibi aynı görünmüyor neden anlamaya çalışıyorum eğlenceli her türlü içine çalıştırabilirsiniz . ini ayarı.

<form blah blah blah method="post">
  <input type="hidden" name="name" value="<?= htmlspecialchars($list1) ?>" />
  <input type="submit" name="add" value="Add />
</form>

Ve htmlspecialchars () çağrısı unutmayın. Ya $ list1 ya $ list2 bir çift tırnak (") içeriyorsa, bu HTML kırarım

Currently you are clearing the name array, you need to call the array then the index you want to unset within the array:

$ar[0]==2
$ar[1]==7
$ar[2]==9

unset ($ar[2])

Two ways of unsetting values within an array:

<?php
# remove by key:
function array_remove_key ()
{
  $args  = func_get_args();
  return array_diff_key($args[0],array_flip(array_slice($args,1)));
}
# remove by value:
function array_remove_value ()
{
  $args = func_get_args();
  return array_diff($args[0],array_slice($args,1));
}

$fruit_inventory = array(
  'apples' => 52,
  'bananas' => 78,
  'peaches' => 'out of season',
  'pears' => 'out of season',
  'oranges' => 'no longer sold',
  'carrots' => 15,
  'beets' => 15,
);

echo "<pre>Original Array:\n",
     print_r($fruit_inventory,TRUE),
     '</pre>';

# For example, beets and carrots are not fruits...
$fruit_inventory = array_remove_key($fruit_inventory,
                                    "beets",
                                    "carrots");
echo "<pre>Array after key removal:\n",
     print_r($fruit_inventory,TRUE),
     '</pre>';

# Let's also remove 'out of season' and 'no longer sold' fruit...
$fruit_inventory = array_remove_value($fruit_inventory,
                                      "out of season",
                                      "no longer sold");
echo "<pre>Array after value removal:\n",
     print_r($fruit_inventory,TRUE),
     '</pre>';
?> 

Yani, unset iç dizi sayaca hiçbir etkisi yoktur!

http://us.php.net/unset

Bunu dene:

if(FALSE !== ($key = array_search($_GET['name'],$_SESSION['name'])))
{
    unset($_SESSION['name'][$key]);
}