Member 14014830 Ответов: 2

Php - невозможно перенести _GET с предыдущего url-адреса


Ладно, вот моя единственная проблема. По какой - то причине URL-адрес не переносит "получает", но он переносит информацию о посте. Главная линия, которая здесь является проблемой, это "http://www.mywebsite.com/resetpass.php?email=$email&hash=$hash&password=$password" когда сайт загружается, все, что вы получаете, это: http://www.mywebsite.com/resetpass.php?email=&hash=&password=PASSWORDWORKS

Я также боюсь безопасности для этого процесса, но это очень сложно сделать систему under-laying все на одном php-сайте

<form action="resetpass.php" id="form" method="post" name="form">
New Password: <input type="text" name="password"><br>
Confirm Password: <input type="text" name="confirm"><br>
<input type="submit" name="submit" value="Change Password">
</form>

<?php

//no way to hide pass in link for this part?
if(isset($_POST['submit']))
{
    $password = $_POST['password'];
    $confirm = $_POST['confirm'];
    if ($password == $confirm && !empty($password) && !empty($confirm))
    {
        $hash = $_GET['hash'];
        $email = $_GET['email'];
        //echo "<script>document.location.href=resetpass.php?email=".$email."&hash=".$hash."&password=".$password."</script>";
        header("Location: http://www.mywebsite.com/resetpass.php?email=$email&hash=$hash&password=$password");
        //header("Location: http://www.mywebsite.com/resetpass.php?email=".$email."&hash=".$hash."&password=".$password);
        exit;
    }
    else
    {
        echo('Passwords do not match!<br/>Go back and try again.');
    }
}
?>


Что я уже пробовал:

Я просто бросил "get" повсюду и закомментировал URL-адреса в качестве альтернативных методов. чтобы посмотреть, будет ли он принимать значения в какой-то момент, но по какой-то причине он никогда не несет, что бы я ни делал. Чего не хватает?

2 Ответов

Рейтинг:
15

summiya1

GET parameters go in the action url, POST parameters in the form's inputs

<form method="post" action="/somepage.php?get=parameters&are=here">
    <input type="text" name="postParameter" value="this value will be sent as POST">
    ... etc
</form>

ОПЕРАЦИОННАЯ

кроме того, вы можете сохранить свое значение в сеансе и получить к нему доступ внутри метода post.

ОПЕРАЦИОННАЯ
вы можете создать скрытое поле ввода и встроить сюда свои параметры

<input name="hash" type="hidden" value="<?php echo htmlspecialchars($_GET['hash'], ENT_QUOTES); ?>"> 

<pre><input name="email" type="hidden" value="<?php echo htmlspecialchars($_GET['email'], ENT_QUOTES); ?>"> 


Member 14014830

Гений?

summiya1

:)

Рейтинг:
1

W∴ Balboos, GHB

Проверьте содержимое вашего хэша на стороне отправки. Если он содержит какие-либо символы URL-адреса "control", у вас возникнут проблемы (я использовал их псевдонимы, когда мне это было нужно, конвертируя обратно после получения). Если, например, он содержит &, это вызовет проблемы (не то, что вы видите, а пример). Не думайте, что все так, как вы ожидаете, потому что если бы это было так, вы бы не опубликовали этот вопрос!

Но помимо этого, вы можете использовать дуэльную природу $_REQUEST, чтобы прочитать все сообщения и получить-просто чтобы проверить, что у вас есть. Что-то вроде print_r($_REQUEST) и получить полную историю для серверной стороны.