so bin ich ziemlich neu in der Programmierung/Scripting HTML.PHP HTML Form Validation
Mein aktuelles Projekt ist PHP/HTML, ich erstelle eine Website, die HTML-Templates sind vorbereitet, aber ich muss PHP und JavaScript einfügen, damit die Dinge funktionieren.
Ausgabe von heute, ich bin ein Anmeldeformular für meine Website erstellen (bevor ich das Login und sichere Seiten erstellen ...)
ich einige nützliche Informationen bei w3schools gefunden mir erlaubt, den Code unten zu kopieren und ändern .
Der Code war in Ordnung, außer Fehler wurden auf der Seite angezeigt, bis ich sie behoben habe.
Ich wollte den PHP in eine Funktion stapeln, so dass undefinierte vars
der Datenbankbehandlung auf der Seite nicht angezeigt wurde, bis die Funktion ausgeführt und vars
definiert wurde, alle Fehler aus den anderen PHP-Dateien vollständig negiert.
Mein Problem ist jetzt, dass die Funktion entweder on click
nicht ausgeführt wird oder die Werte nicht zum Debuggen zum Echo zurückgegeben werden.
vielleicht, da dies meine Faust ist immer PHP-Seite fehlt mir etwas euch mit
helfen könnte ich w3schools & Google nach Antworten, aber nichts überprüft haben scheint detailliert genug zu werden, oder das Problem ist nicht die gleich.
(Dateinamen geändert wurden und Junk wie Klassen & Stile zur besseren Lesbarkeit, externe Dateien nicht enthalten noch erforderlich entfernt wurden)
//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;
}
?>
ich versuchte $GLOBALS['varname']
zu verwenden, um die Variablen rufen von außerhalb der Funktion und return $varname
, um es zurück für Echo, aber ich habe keine Ergebnisse, keine Fehler.
Hier ist das HTML-Formular, so dass Sie wissen, wie ich versuche, vars
um zu bewegen.
//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>
Endlich versuche ich die Ausgänge auf die gleiche Seite zu debuggen, mit der ich arbeite. Sobald ich die Pausen fertig gestellt habe, wird dieser Abschnitt auskommentiert oder entfernt.
//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>";
?>
Mögliche Duplikat [Anruf PHP-Funktion von Javascript] (https://stackoverflow.com/questions/7165395/call-php-function-from-javascript) – Terminus
Sie für die Eingabe danken, das mir helfen sollte, vorwärts bewegen –