ですから、私はプログラミング/スクリプトHTMLにはかなり新しいです。PHP HTMLフォーム検証
私の現在のプロジェクトはPHP/HTMLです。ウェブサイトを構築するにはHTMLテンプレートが用意されていますが、PHPとJavaScriptを挿入して動作させる必要があります。 (私がログインとセキュアなページを作成する前に...)私は私がコピーして、以下のコードを修正することができW3Schoolsのではいくつかの有用な情報を見つけました
今日の問題は、私は私のウェブサイトの登録フォームを作成しています。
コードを修正するまで、ページにエラーが表示されていたことを除いて、コードは正常に機能していました。
私は、関数が実行していたとvars
が完全に他のPHPファイルからすべてのエラーを否定し、定義されていたまで、データベース処理の未定義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
の可能性の重複が入力いただきありがとうございます、これは私を助けなければなりません前進する –