Представление о refre sh проблема, как получить его без использования функции заголовка - PullRequest
0 голосов
/ 10 февраля 2020

Вот моя проблема:

Я не смог предотвратить отправку на страницу refre sh. Я создаю небольшое приложение для игры, но моя проблема в том, что каждый раз, когда я обновляю свою страницу, моя форма данных будет отправляться на главную страницу, поэтому моя запись будет go сумасшедшей.

Вот мой код:

index. php

<?php

$_SESSION = [];
$title = 'Index';

?>

<div class="container" id="signin">
   <div>
      <div>
         <form action="untitled.php" method="POST" data-parsley-validate="">
            <label>Nome :</label><input type="text" name="username" class="box" required data-parsley-error-message="Inserisci il tuo username">
            <label>Password :</label><input type="password" name="password" class="box" required data-parsley-error-message="Inserisci la tua password">
            <?php
            if(isset($_GET["errors"])) {
               foreach ($_GET["errors"] as $value) {
                  echo '<p>'.$value.'</p>';
               }
            }
            ?>
            <input type="submit" value="Entra!" name="submit">
         </form>
      </div>
   </div>
</div>

без названия. php

<code><?php

session_start();

if(isset($_POST['submit'])) {
  var_dump(isset($_POST['submit']));
  die();
  $myusername = $_POST['username'];
  $mypassword = $_POST['password'];

  $sql = $pdo->prepare('SELECT * FROM user WHERE username = ?');
  $sql->bindValue(1, $myusername, PDO::PARAM_STR);
  $sql->execute();

  $rows = $sql->fetchAll(PDO::FETCH_NUM);

  if (empty($rows)) {

    $errors = array(
      "username" => "Non ci sono corrispondenze con il tuo username, riprova per piacere"
    );

    $queries = array(
      "errors" => $errors
    );

    $queryString = http_build_query($queries);

    session_destroy();
    header("Location: index.php?" . $queryString);

  } elseif ($rows[0][3] == $myusername && $rows[0][4] == $mypassword) {
    echo '<pre>';
    var_dump($_SESSION);
    echo '
'; $ _SESSION ['error_username'] = null; $ _SESSION ['error_password'] = null; $ _SESSION ['login_user'] = $ myusername; $ _SESSION ['user_id'] = $ row [0] [0]; $ _SESSION ['id'] = session_id (); $ _SESSION ['time'] = время (); $ _SESSION ['try_quantity'] = 0; function getrandomimage () {$ imageplay = ['400.png', '500.png', 'sorry.png']; $ randKeys = array_rand ($ imageplay, 1); return $ _SESSION ['getrandomimage'] = $ imageplay [$ randKeys]; } getrandomimage (); $ sql2 = $ pdo-> prepare ('SELECT * FROM myAttempts WHERE username_id =?'); $ sql2-> bindValue (1, $ _SESSION ['user_id'], PDO :: PARAM_STR); $ Sql2-> Execute (); $ row2 = $ sql2-> fetch (PDO :: FETCH_NUM); if (empty ($ row2)) {$ sql = "INSERT INTO myAttempts (username_id, session_id, try_username, time_attempt, попытки_quantity) VALUES (?,?,?,?,?)"; $ stmt = $ pdo-> prepare ($ sql); $ stmt-> execute ([$ _ SESSION ['user_id'], $ _SESSION ['id'], $ _SESSION ['login_user'], $ _SESSION ['time'], $ _SESSION ['try_quantity']]); $ pdo = null; $ stmt = ноль; } else {if ($ row2 [5]> 10) {header ("location: index. php"); } else {$ sql3 = "ОБНОВЛЕНИЕ myAttempts SET попытки_квантовы = попытки_квантовы + 1 ГДЕ username_id = '". $ _ SESSION [' user_id ']. "'"; $ Pdo-> запрос ($ SQL3); $ pdo = null; $ stmt = ноль; }}} elseif ($ row [0] [3] == $ myusername && $ row [0] [4]! == $ mypassword) {$ errors = array ("password" => "la tua password potrebbe essere errata" ",); $ query = array ("errors" => $ errors); $ queryString = http_build_query ($ query); session_destroy (); header ("Местоположение: индекс. php?". $ queryString); }} else {header ("location: index. php"); }?>

Лог c довольно прост. Раньше я использовал заголовок функции ("location: another_page. php") для запуска кода на другой странице, чтобы избежать проблемы refre sh, но таким образом я не смог перехватить переменную $ _POST для по какой-то причине.

Теперь моя цель - изменить поведение этого фрагмента без javascript:

if(isset($_POST['submit'])) {
  var_dump(isset($_POST['submit']));
die();

Проблема в том, что эта переменная всегда будет иметь значение true при refre sh по какой-то причине, которую я хочу избежать. Есть идеи?

...