所以我对编程/脚本HTML相当陌生。PHP HTML表单验证
我目前的项目是PHP/HTML,建立一个网站,HTML模板已经准备好了,但我需要插入PHP和JavaScript来使事情有效。
今天的问题,我创建一个登记表,我的网站(之前我创建登录和安全的网页...)
我发现在W3School一些有用的信息让我复制和修改下面的代码。
该代码工作正常,除了错误在页面上显示,直到我修复它们。
我想将php堆叠到一个函数中,以便数据库处理的未定义vars
直到函数运行并且vars
已被定义时才显示在页面上,完全否定了其他php文件中的任何错误。
我现在的问题是,该功能或者没有运行on click
或者这些值没有返回到调试回声。
也许因为这是我的拳头不断PHP页面,我失去了一些东西,你们可以用
我检查W3Schools的&谷歌的答案,但没有帮助似乎不够详细,或者问题不是相同。
(文件名已更改和垃圾,如类&风格已为便于阅读,删除,外部文件不包括也不需要)
//PHP>Register page> php placed before form html
<?php
//define variables
//error var
$usernameErr = $emailErr = $passwordErr = $repeatpassErr = "";
//transferable vars
$username = $email = $password = $repeatpass = "";
//create session manager
function session_reg(){
//Start session registration
session_start();
//require push file
require 'secure-sql.php';
//confirm request method
if($_SERVER['REQUEST_METHOD'] == "POST"){
//confirm fields are populated
if(empty($_POST["username"])) {
//if empty error
$usernameErr = "Name is required";
}else {
//else confirm input and check restrictions
$username = test_input($_POST["username"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z0-9 ]*$/",$username)) {
$usernameErr = "Only letters and white space allowed";
}
}
//confirm fields are populated
if(empty($_POST["email"])) {
$emailErr = "Email is required";
}else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}
//confirm fields are populated
if(empty($_POST["password"])){
$passwordErr = "Must enter a password";
}else{
$password = test_input($_POST["password"]);
}
//confirm fields are populated
if(empty($_POST["repeatpass"])){
$repeatpassErr = "Must repeat your password";
}else{
$repeatpass = test_input($_POST["repeatpass"]);
}
}
//compare password and repeat are the same
if ($password === $repeatpass){
//db_quote to secure from injection
$username = db_quote($_POST['username']);
$email = db_quote($_POST['email']);
$password = db_quote($_POST['password']);
//section is a work in progress, shouldn't be required for local debugging
//query db for usernames and emails to avoid dupes
//db_query()
//insert into db
}else{
//or return password error
$passwordErr = "passwords must be the same";
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
我试图使用$GLOBALS['varname']
从功能外调用变量和return $varname
推回来回声,但我没有结果,没有错误。
这里是HTML表格,以便您知道我如何尝试移动vars
。
//PHP> Register Page>After PHP Functions
<h2>Register</h2>
<h6>* Required field<h6>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<table class='reg-table' style='align-content:center;'>
<tr>
<td>Username:</td>
<td><input size='20' type="text" name="username" value='<?php echo $username;?>'><span>* <?php echo $usernameErr;?></span></td>
</tr>
<tr>
<td>E-mail:</td>
<td><input type="text" name="email" value='<?php echo $email;?>'><span>* <?php echo $emailErr;?></span></td>
</tr>
<tr>
<td>Password:</td>
<td><input pattern=".{5,}" required title="5 characters minimum" type="password" name="password" ><span>* <?php echo $passwordErr;?></span></td>
</tr>
<tr>
<td>Repeat Password:</td>
<td><input type="password" name="repeatpass"><span>* <?php echo $passwordErr;?></span></td>
</tr>
<tr>
<td></td>
<td class="g-recaptcha" required></tr>
</tr>
<tr>
<td></td>
<td><input onclick="session_reg()" type="submit" name="submit" value="Register"></td>
</tr>
</table>
</form>
最后我试图调试输出到我正在使用的同一页面上。一旦我完成了休息,这部分将被注释掉或删除。
//debug output
echo "<h3>var outputs</h3>";
echo "<br>";
echo $username;
echo "<br>";
echo $usernameErr;
echo "<br>";
echo $email;
echo "<br>";
echo $emailErr;
echo "<br>";
echo $password;
echo "<br>";
echo $passwordErr;
echo "<br>";
echo "<h3>end debug</h3>";
?>
[从JavaScript调用PHP函数]的可能的复制(https://stackoverflow.com/questions/7165395/call-php-function-from-javascript) – Terminus
谢谢你的输入,这应该帮助我向前移动 –