我尝试使用$_POST
方法提交数据,但我的数据无法进入下一页。当我使用$_GET
时,我的数据确实可以通过。我该如何解决这个问题?
我的代码:
<form class="aanmelden" method="GET" action="login_verwerken.php">
<h1>Aanmelden</h1>
<label for="e_mail">E-mail:</label>
<input type="text" id="e_mail" name="email" placeholder="E-mailadres" autofocus required>
<label for="wachtwoord">Wachtwoord:</label>
<input type="password" id="wachtwoord" name="wachtwoord" placeholder="Wachtwoord" required>
<input type="checkbox" id="gegevens" name="onthouden">
<label for="gegevens">Inloggegevens onhouden</label>
<input type="submit" value="Aanmelden">
<a href="registreren_persoonlijke_gegevens.php"><h2 class="registreren">Registreren</h2></a>
</form>
正在发送$_GET
和$_POST
数据的网页代码:
<?php
session_start();
require_once('../dbInfo.php');
$mailadres = $_GET['email'];
$wachtwoord = $_GET['wachtwoord'];
echo $mailadres;
echo $wachtwoord;
$query = "SELECT gebruikersnaam FROM gebruikers WHERE emailAdres = '$mailadres' AND wachtwoord = '$wachtwoord' ";
$data = $dbh->query($query);
$test = $data->fetch();
if ($row = $test[0]){
$_SESSION['naam'] = $test[0];
header('Location: ../login/filmoverzicht.php');
//echo "gelukt";
//echo $_SESSION['naam'];
}else {
echo "Login niet gelukt!";
header('Location: ../public/home_page.php');
}
?>
有人能帮助我吗?
答案 0 :(得分:1)
<form class="aanmelden" method="POST" action="">
<h1>Aanmelden</h1>
<label for="e_mail">E-mail:</label>
<input type="text" id="e_mail" name="email" placeholder="E-mailadres" autofocus required>
<label for="wachtwoord">Wachtwoord:</label>
<input type="password" id="wachtwoord" name="wachtwoord" placeholder="Wachtwoord" required>
<input type="checkbox" id="gegevens" name="onthouden">
<label for="gegevens">Inloggegevens onhouden</label>
<input type="submit" value="Aanmelden">
<a href="registreren_persoonlijke_gegevens.php"><h2 class="registreren">Registreren</h2></a>
</form>
<?php
if(isset($_POST) && !empty($_POST)) {
echo "<pre>";
print_r($_POST);
}
?>
答案 1 :(得分:0)
很明显,您在代码中使用了$_GET
。你不会从中获得任何POST值。您应该使用$_POST
:
$mailadres = $_POST['email'];
$wachtwoord = $_POST['wachtwoord'];
在HTML中,您应该从method="get"
更改为method="post"
。
此外,请勿在查询中直接使用$_GET
或$_POST
值。您应该首先转义或清除变量。
最后,在if
案例(if ($row = $test[0])
)中,您应该使用==
代替=
。
答案 2 :(得分:0)
您从$_GET
收到了数据,因为您已将method
称为GET
。它应该是method="POST"
<form class="aanmelden" method="GET" action="login_verwerken.php">
OR
<form class="aanmelden" action="login_verwerken.php">
以上表单标记将使用方法GET
。如果您未在表单标记中提及method
,则默认情况下会method="GET"
。要使用POST
发送数据,您必须在表单标记中使用method="POST"
。
<form class="aanmelden" method="POST" action="login_verwerken.php">
还有一件事。 SQL Injection可以通过以下查询完成。您已直接使用$mailadres
和$wachtwoord
进行查询。
$query = "SELECT gebruikersnaam FROM gebruikers WHERE emailAdres = '$mailadres' AND wachtwoord = '$wachtwoord' ";
要阻止SQL Injection,您可以使用参数化查询。