所以我对HTML编程/脚本编写起来相当新。
我目前的项目是PHP / HTML,构建一个网站,HTML模板已经准备好了,但我需要插入PHP和JavaScript来使事情有效。
今天的问题,我正在为我的网站创建一个注册表单(在我创建登录和安全页面之前......)
我在w3schools找到了一些有用的信息,允许我复制和修改下面的代码。
代码工作正常,除非我修复了错误,否则会在页面上显示错误。
我想将php堆叠到一个函数中,以便在函数运行并定义vars
之前,数据库处理的未定义vars
没有显示在页面上,完全否定了其他错误php文件。
我现在的问题是该函数要么没有运行on click
,要么没有将值返回到echo进行调试。
也许因为这是我的拳头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>";
?>
答案 0 :(得分:0)
在我看来,您正在尝试使用onclick加载PHP函数。您只能使用onclick调用JavaScript函数。
<td><input onclick="session_reg()" type="submit" name="submit" value="Register"></td>