我有一个登录表单,我通过PHP验证。问题是,表单的操作引用了文件本身,因此它将刷新页面。我不喜欢这个。是否可以通过PHP检查输入而无需刷新页面?
这是我的代码:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
session_start();
$username = $_POST['username'];
$passwort = $_POST['passwort'];
$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);
// Benutzername und Passwort werden überprüft
if ($username == 'admin' && $passwort == 'admin') {
$_SESSION['angemeldet'] = true;
// Weiterleitung zur geschützten Startseite
if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
if (php_sapi_name() == 'cgi') {
header('Status: 303 See Other');
}
else {
header('HTTP/1.1 303 See Other');
}
}
header('downloadbereich.php');
exit;
}
}
?>
<link href="login.css" rel="stylesheet" type="text/css" />
<div class="contactForm" id="contactForm" style="width: 500px; margin: auto; float: left;">
<form name="myform" method="post" action="login.php<!-- this is what I want to remove-->">
<p class="form" style="width: 245px; height: 116px; margin-right: 10px;"><input class="field" type="text" name="username" placeholder="Name" />
<input class="field" type="password" autofocus name="passwort" placeholder="Passwort" />
<button class="button" name="Submit">Login</button></p>
</form>
</div>
答案 0 :(得分:1)
在此页面调用ajax,您的页面将无法刷新。 ajax有一个调用该页面但不刷新页面的帖子页面调用。
答案 1 :(得分:1)
另一种可能性:在页面中创建一个iframe并发布到该页面。
<div id="somediv">Not logged in"</div>
<iframe id="upload_target" name="upload_target" src="about:blank"></iframe>
<form id="myform" name="myform" action="page_to_post_to.php" method="post" enctype="multipart/form-data" target="upload_target" >
//your form
</form>
里面* page_to_post_to.php *你可以随心所欲。对主页面的反馈可以通过一些javascript给出,引用父母。
<php
//do your stuff here
?>
<script>
window.top.window.document.getElementById('somediv').innerHTML='logged in';
</script>
答案 2 :(得分:0)
使用jQuery - AJAX:
$.post('login.php', {
username : $('input[name=username]').val(),
password : $('input[name=password]').val()
});
答案 3 :(得分:0)
将表单操作设置为php文件,该文件应检查输入并将错误或成功返回到父页面/表单。使用iframe作为表单目标。
你可以像这样使用jQuery(在login.php中):
parent.$('#submitStatus').html('there were some errors');