pasar variable en loop entre páginas con sessions

He iniciado sesión en dos páginas. En ambas tengo una variable global de sesión. En la primera página esta variable está dentro de un loop. Lo que trato de hacer es enviar un valor de variable distinto dependiendo de donde se haga el link. Si es el primer link que se envíe el primer valor de la variable, si es el segundo, el segundo valor..., pero el valor que se envía siempre es el mismo.

pagina1.php

<!DOCTYPE HTML>
<html lang="">
<head>
    <meta charset="UTF-8">
    <title>Pagina 1</title>
</head>
    
<body>
    <h1>Página 1</h1>
    
    <!--inicio sesion-->
    <?php
    session_start();
    ?>
    
    <div class="capitulos">
        
        <!--inicio bucle for con variable de sesión-->
        <?php
        for($a = 0; $a < 3; $a++) :
        $_SESSION['var'] = $a;
        ?>
    
        <!--textos con vínculos y con variable de sesión-->
        <a href="pagina2.php">
            <?php echo "capítulo" . $a; ?> <br>
        </a>
        
        <!--cierro bucle for-->
        <?php
        endfor; ?>
    </div>
</body>
</html>

pagina2.php

<!DOCTYPE HTML>
<html lang="">
<head>
    <meta charset="UTF-8">
    <title>Pagina 2</title>
</head>
    
<body>
    <h1>Página 2</h1>
    
    <?php
    session_start();
    
    //muestro variable de sesión anterior    
    echo $_SESSION['var']; 
    ?>
</body>
</html>
1
задан 19.11.2016, 22:58
2 ответа

Стоимость - всегда та же самая, потому что то, что происходит внутри for это следующее:

В первом шаге:

$_SESSION['var'] = 0

Во втором шаге:

$_SESSION['var'] = 1

В третьем шаге:

$_SESSION['var'] = 2

С чем это был, который был тем, которого ты нажимаешь, стоимостью сеанса var всегда это будет распределенный последний, в этом случае 2. Я рекомендую тебе делать это по-другому, используя $_GET. Вместо того, чтобы руководить пользователем в pagina2.php сделай это таким:

<a href="pagina2.php?capitulo=<?=$a?>">

И после на странице 2 ты сможешь возвращать число такой главы:

echo $_GET['capitulo']; 
2
ответ дан 24.11.2019, 12:30

То, что ты можешь делать, состоит в том, чтобы перемещать с изменчивая $ _GET.

Страница 1:

<?php for($a = 0; $a < 3; $a++) { ?>

<a href="pagina2.php?var=<?php echo $a; ?>">

    <?php echo "capítulo" . $a; ?>
</a>

<?php } ?>

Страница 2:

if (isset($_GET['var'])){

    $_SESSION['var'] = $_GET['var'];
}

Выбор с <form> и $ _POST:

Страница 1:

<?php for($a = 0; $a < 3; $a++) { ?>

    <form action="pagina2.php" method="post">
        <input type="hidden" name="var" value="<?php echo $a; ?>">
        <input type="submit" name="submit" value="Capítulo <?php echo $a; ?>">
    </form>   

<?php } ?> 

Страница 2:

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

    if (!empty($_POST['var'])) {

        echo $_POST['var'];
    }
}

Потом ты можешь давать ему стиль в <input type="submit...>" для того, чтобы он делает вид как соединение, хочешь ли ты.

1
ответ дан 24.11.2019, 12:30
  • 1
    Тогда не необходимо открывать сеансы. Habrá какой-то способ санкционировать безопасность пряча, например, ú ltima часть url? –  virtual8870 20.11.2016, 02:34
  • 2
    @virtual8870 - Действительно не необходимо перемещать это одну @virtual8870 - Действительно не необходимо перемещать это одну [110], если ты это используешь только для pagina 2... Я обновил мой ответ с другой opció n, чтобы перемещать , спрятавшие ví в post стоимость. Но помни, если не enví за безопасным протоколом HTTPS возможно ловить aú n así информация, посланный.SESSION, если ты это используешь только для pagina 2... Я обновил мой ответ с другой opció n, чтобы перемещать , спрятавшие ví в post стоимость. Но помни, если не enví за безопасным протоколом HTTPS возможно ловить aú n así информация, посланный. –  Black Sheep 20.11.2016, 03:20