Он не показывает мне стоимость переменной между страницами

В registro.php я сохраняю переменную с string для того, чтобы он показал мне в index.php, что уже существует пользователь в этикетке p конца, но ничего не показывает мне, я осознаю, что я использую локальные переменные между различными страницами, но это было, чтобы помещать пример, также я попытался с глобальными переменными и совсем не, и $ _SESSION, что знал одинокий, может использоваться, когда его становится одним session_start (); для login, но не для реестра.

PD: кода registro.php одинокий я поместил необходимую часть.

index.php

    <div id="dialog2" title="Register user" style="padding-top: 0;display: none;">
      <form name="registro" method="POST" action="registro.php">
        <fieldset class="display_block">
          <label for="nombre">Name</label>
          <input type="text" name="nombre" id="nombre" autofocus class="text ui-widget-content ui-corner-all">
          <label for="user">User</label>
          <input type="text" name="usuario" id="usuario" class="text ui-widget-content ui-corner-all">
          <label for="password">Password</label>
          <input type="password" name="password" id="password" class="text ui-widget-content ui-corner-all">
          <label for="confpassword">Confirm Password</label>
          <input type="password" name="con_password" id="con_password" class="text ui-widget-content ui-corner-all">
          <select id="tipo_usuario" name="tipo_usuario" style="width: 100%;">
            <option value="0">Seleccione tipo de usuario...</option>
            <?php while($row = $result->fetch_assoc()){ ?>
              <option value="<?php echo $row['id']; ?>"><?php echo $row['tipo']; ?></option>
            <?php } ?>
          </select>
         <input name="registrar" type="button" value="Registrar" onClick="validar();">
         <p align="center" style="color: red;" ><?php echo $userExist; ?></p>
        </fieldset>
      </form>
    </div>

registro.php

        if($rows > 0) {

        $userExist = "El usuario ya existe";
        header("Location: index.php");

        } else {

            $sqlPerson = "INSERT INTO personal (nombre) VALUES('$nombre')";
            $resultPerson=$mysqli->query($sqlPerson);
            $idPersona = $mysqli->insert_id;

            $sqlUsuario = "INSERT INTO usuarios (usuario, password, id_personal, id_tipo) VALUES('$usuario','$password_hash','$idPersona', '$tipo_usuario')";
            $resultUsuario = $mysqli->query($sqlUsuario);
            header("Location: index.php");
    }
}
1
задан 26.01.2017, 21:58
0 ответов

[...] $ _SESSION, что знал одинокий, может использоваться, когда его становится одним session_start (); для login, но не для реестра.

Это не является совсем правильным. Переменные сеанса могут использоваться для того, чтобы хранить информацию, которую ты хочешь, и мочь переносить ее со страницы до страницы, не ограничены информацией login в особенности. В самом деле, в случае, который ты представляешь, самое подходящее состоит в том, чтобы использовать переменные сеанса.

Почему не функционирует то, что у тебя есть?

В PHP, каждый раз, когда загружается страница, переменные "возобновляются" (с какими-то исключениями) и все начинается с нуля. Когда в твоем коде ты делаешь header("Location: index.php");, ты redireccionando в другую страницу, и эта новая страница не будет иметь доступа к переменной $userExist который ты распределил накануне.

Что делать, чтобы это решать?

Используй какой-либо из методов, чтобы перемещать другую переменные одной страницы. В этом случае ты смог бы $userExist как переменная сеанса:

session_start();
$_SESSION["userExist"] = "El usuario ya existe";
header("Location: index.php");

Или прямо в GET, когда ты делаешь перенаправление:

header("Location: index.php?userExist=El usuario ya existe");
2
ответ дан 03.12.2019, 17:29
  • 1
    Tení в тогда definició n неправильная изменчивая $ _SESSION, я тебе благодарен много за твой ответ, оно я функционирует правильно с обоими mé все, если ты позволяешь мне осведомляться, с mé совсем session_start (); я ощущаюсь, что Веб замедляет достаточно, и с GET а следовательно я понимаю не является очень рекомендуемым использовать это из-за тем sqlinjection, и т.д. Cuá l ты рекомендуешь меня в скорости и безопасности? Спасибо! –  26.01.2017, 22:49
  • 2
    @Cifu В этом случае, с GET проблема не serí в inyecció n SQL а XSS (потому что ты не используешь переменную, чтобы искать в базе данных, а чтобы писать ее как часть pá gina). Tendrí эксперт, который должен дезинфицировать ее перед тем, как писать ее из-за экрана, например с htmlspecialchars. На скорости, я представляю себе то, что sesió n ralentizarí во что-то, но не sé из-за qué это что-то такое помеченное, как ты говоришь –  26.01.2017, 23:08
  • 3
    спасибо рыцарь, он echaré беглый взгляд в эту funció n, так как desconocí в который podí an дезинфицировать GET :D –  27.01.2017, 00:39