我已經在PHP中創建了一個註冊頁面,我要求提供一個名稱,用戶名,電子郵件,密碼(並確認),性別和國家。除了第一個和最後一個名字,我都可以完成這些工作,而這些名字都不會發布到我的數據庫中。如何調試不保存數據的表單?
我認爲它不會發布到數據庫,因爲名稱沒有經過。我嘗試了很多,現在我完全陷入困境。我試過谷歌,YouTube等,我找不到任何東西。
<?php
session_start();
include_once("php_includes/check_login_status.php");
if($user_ok == true){
header("location: profile.php?u=".$_SESSION["username"]);
exit();
}
?>
<?php
// Ajax calls this NAME CHECK code to execute
if(isset($_POST["usernamecheck"])){
include_once("php_includes/db_connect.php");
$username = preg_replace('#[^a-z0-9]#i', '', $_POST['usernamecheck']);
$sql = "SELECT id FROM users WHERE username='$username' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$uname_check = mysqli_num_rows($query);
if (strlen($username) < 3 || strlen($username) > 16) {
echo '<strong style="color:#FFF;">3 - 16 characters please</strong>';
exit();
}
if (is_numeric($username[0])) {
echo '<strong style="color:#F00;">Usernames must begin with a letter</strong>';
exit();
}
if ($uname_check < 1) {
echo '<strong style="color:#009900;">' . $username . ' is OK</strong>';
exit();
} else {
echo '<strong style="color:#F00;">' . $username . ' is taken</strong>';
exit();
}
}
?>
<?php
// Ajax calls this REGISTRATION code to execute
if(isset($_POST["u"])){
// CONNECT TO THE DATABASE
include_once("php_includes/db_connect.php");
// GATHER THE POSTED DATA INTO LOCAL VARIABLES\
$f = $_POST['firstname'];
$l = $_POST['lastname'];
$u = preg_replace('#[^a-z0-9]#i', '', $_POST['u']);
$e = mysqli_real_escape_string($db_conx, $_POST['e']);
$p = $_POST['p'];
$g = preg_replace('#[^a-z]#', '', $_POST['g']);
$c = preg_replace('#[^a-z ]#i', '', $_POST['c']);
// GET USER IP ADDRESS
$ip = preg_replace('#[^0-9.]#', '', getenv('REMOTE_ADDR'));
// DUPLICATE DATA CHECKS FOR USERNAME AND EMAIL
$sql = "SELECT id FROM users WHERE username='$u' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$u_check = mysqli_num_rows($query);
// -------------------------------------------
$sql = "SELECT id FROM users WHERE email='$e' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$e_check = mysqli_num_rows($query);
// FORM DATA ERROR HANDLING
if($f = "" || $l = "" || $u == "" || $e == "" || $p == "" || $g == "" || $c == ""){
echo "The form submission is missing values.";
exit();
} else if ($u_check > 0){
echo "The username you entered is alreay taken";
exit();
} else if (strlen($u) < 3 || strlen($u) > 16) {
echo "Username must be between 3 and 16 characters";
exit();
} else if (is_numeric($u[0])) {
echo 'Username cannot begin with a number';
exit();
} else if (strlen($p) < 8) {
echo 'Your password must be 8 characters';
exit();
} else if ($e_check > 0){
echo "That email address is already in use in the system";
exit();
} else {
// END FORM DATA ERROR HANDLING
// Begin Insertion of data into the database
// Hash the password and apply your own mysterious unique salt
$p_md5 = md5($p);
$p_hash = hash('sha512', $p_md5);
// Add user info into the database table for the main site table
$sql = "INSERT INTO users (firstname, lastname, username, email, password, gender, country, ip, signup, lastlogin, notescheck)
VALUES('$f', '$l', '$u','$e','$p_hash','$g','$c,'$ip',now(),now(),now())";
$query = mysqli_query($db_conx, $sql);
$uid = mysqli_insert_id($db_conx);
if(!$query) {
echo "DB1, FAIL<br>";
} else {
echo "DB1, Success<br>";
}
// Establish their row in the useroptions table
$sql = 'INSERT INTO useroptions (id, username, background)
VALUES ("$uid", "$u", "original")';
$query = mysqli_query($db_conx, $sql);
if(!$query) {
echo "DB2, FAIL<br>";
} else {
echo "DB2, Success<br>";
}
// Establish their row in the links table
$url = "www.elefind.x10.bz/profile.php?u=$u";
$sql = "INSERT INTO links (link_id, site_id, url, title, subtitle, description, fulltxt, indexdate, size, md5sum, visible, level)
VALUES('', '', '$url', '$u', '$f $l', '', now(), '', '', '', '')";
$query = mysqli_query($db_conx, $sql);
if(!$query) {
echo "DB3, FAIL<br>";
} else {
echo "DB2, Success<br>";
}
echo "Fname: ".$f."<br>";
echo "Lname: ".$l."<br>";
echo "Uname: ".$u."<br>";
echo "pwd: ".$p_hash."<br>";
echo "Gender: ".$g."<br>";
echo "Country: ".$c."<br>";
echo "ip: ".$ip."<br>";
// Create directory(folder) to hold each user's files(pics, MP3s, etc.)
if (!file_exists("user/")) {
mkdir("user/", 0755);
echo "User folder created.<br>";
}
if (!file_exists("user/$u")) {
mkdir("user/$u", 0755);
echo "profile folder created.<br>";
}
// Email the user their activation link
$to = "$e";
$from = "[email protected]";
$subject = 'Elefind Account Activation';
$message = ' <!DOCTYPE html>';
$message .= ' <html>';
$message .= ' <head>';
$message .= ' <meta charset="UTF-8">';
$message .= ' <title>Elefind Message</title>';
$message .= ' </head>';
$message .= ' <body style="margin:0px; font-family:Tahoma, Geneva, sans-serif;">';
$message .= ' <table style="background:#343642;padding:40px;border:1px solid #DDD;margin:0 auto;font-family:calibri;">';
$message .= ' <tr>';
$message .= ' <td>';
$message .= ' <table style="background:#505260;width:100%;border:1px solid #CCC;padding:0;margin:0;border-collapse:collapse;max-width:100%;width:550px;border-radius:10px;">';
$message .= ' <!-- Logo -->';
$message .= ' <tr>';
$message .= ' <td style="padding:10px 30px;text-align:center;margin:0">';
$message .= ' <p>';
$message .= ' <a href="#"><img src="http://www.elefind.x10.bz/img/logo.png" width="100"></a>';
$message .= ' </p>';
$message .= ' </td>';
$message .= ' </tr>';
$message .= ' <!-- Welcome Salutation -->';
$message .= ' <tr>';
$message .= ' <td style="padding:10px 30px;margin:0;font-size:2.5em;color:#4A7BA5;text-align:center;">';
$message .= ' Welcome to Elefind!';
$message .= ' </td>';
$message .= ' </tr>';
$message .= ' <!-- User Msg -->';
$message .= ' <tr>';
$message .= ' <td style="padding:10px 30px;margin:0;text-align:left;color:FFF;">';
$message .= ' <p>Hey there '.$u.',</p>';
$message .= ' <p>To activate your profile please follow link on the below link,</p>';
$message .= ' </td>';
$message .= ' </tr>';
$message .= ' <!-- Link Button -->';
$message .= ' <tr>';
$message .= ' <td style="padding:10px 30px;text-align:center;">';
$message .= ' <a href="http://elefind.x10.bz/activation.php?id='.$uid.'&u='.$u.'&e='.$e.'&p='.$p_hash.'" title="Activate Profile">';
$message .= ' <img src="http://elefind.x10.bz/img/activate.png" width="300" height="auto">';
$message .= ' </img>';
$message .= ' </a>';
$message .= ' </td>';
$message .= ' </tr>';
$message .= ' <!-- Seperator -->';
$message .= ' <tr>';
$message .= ' <td style="padding:10px 30px;">';
$message .= ' </td>';
$message .= ' </tr>';
$message .= ' <!-- Footer Content -->';
$message .= ' <tr>';
$message .= ' <td style="padding:10px 30px;margin:0;background:#555;color:#CCC;border-top:1px solid #CCC;">';
$message .= ' <p>Once your account is active you can sign in with your email adress.</p>';
$message .= ' <p>Didn\'t request this? If you didn\'t request a to make an account with us, please let us know.</p>';
$message .= ' <p>This email is sent from an unmonitored address. Please do not reply.<!-- Please use links inline to get additional information or help.--></p>';
$message .= ' <!--<p>If you no longer wish to receive these emails, click here to <a href="#" style="color:#FFF;">Unsubscribe</a></p>-->';
$message .= ' </td>';
$message .= ' </tr>';
$message .= ' </table>';
$message .= ' <!-- Some more content -->';
$message .= ' <tr>';
$message .= ' <td style="padding:10px 30px;margin:0;font-size:10px;">';
$message .= ' <p> Click on the link above to activate your account, If the button does not work please use the following link,</br>';
$message .= ' <a href="http://elefind.x10.bz/activation.php?id='.$uid.'&u='.$u.'&e='.$e.'&p='.$p_hash.'">';
$message .= ' http://elefind.x10.bz/activation.php?id='.$uid.'&u='.$u.'&e='.$e.'&p='.$p_hash;
$message .= ' </a>';
$message .= ' </p>';
$message .= ' </td>';
$message .= ' </tr>';
$message .= ' </td>';
$message .= ' </tr>';
$message .= ' </table>';
$message .= ' </body>';
$message .= ' </html>';
$headers = "From: $from\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
mail($to, $subject, $message, $headers);
echo "ACCOUNT_CREATED_SUCCESSFULLY";
exit();
}
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<head name="Default">
<link rel="icon" href="favicon.ico" type="image/x-icon">
<meta charset="UTF-8">
<title>Sign Up</title>
</head>
<head name="CSS">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="css/pages/signup.css">
<link rel="stylesheet" href="css/header.css">
<link rel="stylesheet" href="css/footer.css">
<link rel="stylesheet" href="css/fonts.css">
</head>
<head name="JS">
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script src="js/pages/signup.js"></script>
<script src="js/header.js"></script>
<script src="js/main.js"></script>
<script src="js/ajax.js"></script>
<script>
$('.send').click(function(e){
$(".send").addClass("sending");
})
function restrict(elem){
var tf = document.getElementById(elem);
var rx = new RegExp;
if(elem == "email"){
rx = /[' "]/gi;
} else if(elem == "username"){
rx = /[^a-z0-9]/gi;
} else if(elem == "name"){
rx = /[^a-z]/gi;
} else if(elem == "name"){
rx = /[^a-z]/gi;
}
tf.value = tf.value.replace(rx, "");
}
function emptyElement(x){
document.getElementById(x).innerHTML = "";
}
function checkusername(){
var u = document.getElementById("username").value;
if(u != ""){
document.getElementById("unamestatus").innerHTML = 'checking ...';
var ajax = ajaxObj("POST", "signup.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
document.getElementById("unamestatus").innerHTML = ajax.responseText;
}
}
ajax.send("usernamecheck="+u);
}
}
function signup(){
var fn = document.getElementById("firstname").value;
var ln = document.getElementById("lastname").value;
var u = document.getElementById("username").value;
var e = document.getElementById("email").value;
var p1 = document.getElementById("pass1").value;
var p2 = document.getElementById("pass2").value;
var c = document.getElementById("country").value;
var g = document.getElementById("gender").value;
var status = document.getElementById("status");
if(fn == "" || ln == ""|| u == "" || e == "" || p1 == "" || p2 == "" || c == "" || g == ""){
status.innerHTML = "Some of the form data is missing, Please fill it all out.<br>first name: "+fn+"<br>Last name: "+ln;
$(".send").removeClass("sending");
} else if(p1 != p2){
status.innerHTML = "Your password fields do not match";
$(".send").removeClass("sending");
} else {
var ajax = ajaxObj("POST", "signup.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
if(ajax.responseText != "ACCOUNT_CREATED_SUCCESSFULLY"){
status.innerHTML = ajax.responseText;
$(".send").removeClass("sending");
} else {
window.scrollTo(0,0);
$(".send").removeClass("sending");
document.getElementById("signupform").innerHTML = "OK "+u+", check your email inbox and junk mail box at <u>"+e+"</u> in a moment to complete the sign up process by activating your account. You will not be able to do anything on the site until you successfully activate your account. <br><br>fname: "+fn+"<br>lname: "+ln+"<br> username: "+u+"<br>email: "+e+"<br>password: "+p1+ "<br><br>Correct?";
}
}
}
ajax.send("fn="+fn+"&ln="+ln+"&u="+u+"&e="+e+"&p="+p1+"&c="+c+"&g="+g);
}
}
</script>
</head>
</head>
<body>
<?php include_once("header.php"); ?>
<div class="content">
<div class="cont">
<form name="signupform" id="signupform" action="signup()">
<div class="demo">
<div class="signup">
<div class="signup__check"></div>
<div class="signup__form">
<div class="signup__row">
<input type="text" placeholder="First name" class="signup__input name" id="firstname" name="firstname" onfocus="emptyElement('status')" onkeyup="restrict('name')" maxlength="32">
<br>
</div>
<div class="signup__row">
<input type="text" placeholder="Last name" class="signup__input name" id="lastname" name="lastname" onfocus="emptyElement('status')" onkeyup="restrict('name')" maxlength="32">
<br>
</div>
<div class="signup__row">
<input type="text" placeholder="Username" class="signup__input name" id="username" onfocus="emptyElement('status')" onblur="checkusername()" onkeyup="restrict('username')" maxlength="16">
<br>
<span id="unamestatus"></span>
</div>
<div class="signup__row">
<input type="text" placeholder="Email" class="signup__input name" id="email" onfocus="emptyElement('status')" onkeyup="restrict('email')" maxlength="88">
</div>
<div class="signup__row">
<input type="password" placeholder="Password" class="signup__input pass" id="pass1" onfocus="emptyElement('status')" maxlength="16">
</div>
<div class="signup__row">
<input type="password" placeholder="Confirm password" class="signup__input pass" id="pass2" onfocus="emptyElement('status')" maxlength="16">
</div>
<div class="signup__row">
<select id="gender" onfocus="emptyElement('status')" placeholder="Gender" class="signup__input">
<option value="">Please select a gender</option>
<option value="m">Male</option>
<option value="f">Female</option>
</select>
</div>
<div class="signup__row">
<select id="country" onfocus="emptyElement('status')" placeholder="Country" class="signup__input">
<?php include_once("inc/countries.php"); ?>
</select>
</div>
<div>
<p class="signup__terms"> By creating an account you accept the <a href="terms_of_service.php">terms of service</a> </p>
</div>
<p id="status"></p>
<button id="signupbtn" onclick="signup()" class="send"name="Submit">Sign up</button>
</div>
</div>
</div>
</form>
</div>
</div>
<?php include_once("footer.php"); ?>
</body>
</html>
您收到了哪些錯誤?我瞥了一眼你的MySQL並注意到'$ f'。 PHP僅使用雙引號解析變量而不是單引號。我假設這不是你唯一的問題?同樣在$ c左右,你錯過了第二個報價。 –
在我嘗試寫入數據庫之後,您會看到我在哪裏放置了所有變量的回顯,當它們回顯時顯示出所有內容,但不是名稱...我沒有注意到引號... XD對不起,如果解決了這個問題,謝謝 –
爲名字和姓氏問題添加了一個答案 –