我已经通过查看以前的问题答案来研究这个问题一段时间了,但仍然不起作用。
通过 PHP 提交时,我正在尝试使用引导模式形式的数据更新 MySQL 表。下面的 php 代码在以前的网站(不使用引导程序)中使用它时有效。
我得到的问题是提交时;表单通过javascript验证,然后打开寄存器.php文件。当我查看MySQL表时,数据尚未传输,网页只是空白,没有内容(url显示为http://localhost/BootstrapEx/php/register.php
)。
请有人帮助为什么在使用 Twitter Bootstrap 时表单中的数据不会传输到 MySQL 以及解决此问题的方法?
我知道我必须更改/更新 php 文件中的安全性、验证和错误页面,但在这个阶段,我希望它做的只是将数据加载到 MySQL 表中。我临时创建了Thankyou.html,SystemError.html和RegError.html正如您将在php代码中看到的那样,只是为了查看这些页面是否打开。
请在下面找到代码:
Html:只是模态表单部分
<div class="modal fade" id ="Register" role ="dialog">
<div class="modal-dialog">
<div class = "modal-content">
<div class = "modal-header">
<h4>Registration Screen</h4>
</div>
<div class ="modal-body">
<form name="myForm" role="form" action="php/register.php" method ="post" onsubmit="return validateForm()">
<fieldset>
<div class="form-group">
<label for="fname">First Name</label><span>*</span>
<input type="FirstName" class="form-control" id="fname" placeholder="Enter your first name" name="fname">
</div>
<div class="form-group">
<label for="lname">Last Name</label><span>*</span>
<input type="Surname" class="form-control" id="lname" placeholder="Enter your last name or surname" name="lname">
</div>
<div class="form-group">
<label for="email">Email address</label><span>*</span>
<input type="email" class="form-control" id="email" placeholder="Enter email" name="email">
</div>
<div class="form-group">
<label for="psword1">Password</label><span>*</span>
<input type="password" class="form-control" id="psword1" placeholder="Password" name="psword1">
</div>
<div class="form-group">
<label for="psword2">Confirm Password</label><span>*</span>
<input type="password" class="form-control" id="psword2" placeholder="Confirm Password" name="psword2">
</div>
<div class = "form-group">
<a class = "btn btn-default" data-dismiss = "modal">Close</a>
<button class = "btn btn-primary" type="submit" name="submit" value="Yes">Register</button>
</fieldset>
</div>
</div>
</div>
</div>
</div>
</form>
注册.php文件(请原谅错误部分,一旦数据提交到表中,这些部分将更新)。
<?php
if(isset($_POST['submit']))
{
require ('php/mysqli_connect.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$errors = array(); // Initialize an error array.
// Check for a first name:
if (empty($_POST['fname']))
{
$errors[] = 'You forgot to enter your first name.';
} else
{
$fn = mysqli_real_escape_string($dbcon, trim($_POST['fname']));
}
// Check for a last name:
if (empty($_POST['lname']))
{
$errors[] = 'You forgot to enter your last name.';
} else
{
$ln = mysqli_real_escape_string($dbcon, trim($_POST['lname']));
}
// Check for an email address:
if (empty($_POST['email']))
{
$errors[] = 'You forgot to enter your email address.';
} else
{
$e = mysqli_real_escape_string($dbcon, trim($_POST['email']));
}
// Check for a password and match against the confirmed password:
if (!empty($_POST['psword1']))
{
if ($_POST['psword1'] != $_POST['psword2'])
{
$errors[] = 'Your two passwords did not match.';
} else
{
$p = mysqli_real_escape_string($dbcon, trim($_POST['psword1']));
}
} else
{
$errors[] = 'You forgot to enter your password.';
}
if (empty($errors))
{ // If everything's OK.
// Register the user in the database...
// Make the query:
$q = "INSERT INTO users (user_id, fname, lname, email, psword, registration_date) VALUES (' ', '$fn', '$ln', '$e', SHA1('$p'), NOW() )";
$result = @mysqli_query ($dbcon, $q); // Run the query.
if ($result)
{ // If it ran OK
header("Location:http://localhost/BootstrapEx/Thankyou.html");
echo '<p>Fields Loaded</p>';
exit();
} else
{ // If it did not run OK
// Error message:
header("Location:http://localhost/BootstrapEx/SystemError.html");
echo '<h2>System Error</h2>
<p class="error">You could not be registered due to a system error. We apologize for any inconvenience.</p>';
//Debugging message:
echo '<p>' . mysqli_error($dbcon) . '<br><br>Query: ' . $q . '</p>';
} // End of if ($result)
mysqli_close($dbcon); // Close the database connection.
exit();
} else
{ // Report the errors
header("Location:http://localhost/BootstrapEx/RegError.html");
echo '<h2>Error!</h2>
<p class="error">The following error(s) occurred:<br>';
foreach ($errors as $msg) { // Echo each error
echo " - $msg<br>n";
}
echo '</p><h3>Please try again.</h3><p><br></p>';
}// End of if (empty($errors))
} // End of the main Submit conditional
}
?>
MySQL php连接文件(用户名,密码等详细信息已更改)
<?php
//This file provides the information for accessing the database and connecting to
//mysql. It also sets the language coding to utf-8.
DEFINE ('DB_USER', '****')
DEFINE ('DB_PASSWORD', '****')
DEFINE ('DB_HOST', 'localhost')
DEFINE ('DB_NAME', '****')
$dbcon = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR die ('Could not connect to MySQL:' .mysqli_connect_error());
language encoding
mysqli_set_charset($dbcon, 'utf8');
?>
Javascript 验证
function validateForm() {
// First name validation
var w = document.forms["myForm"]["fname"].value;
var x = document.forms["myForm"]["lname"].value;
var y = document.forms["myForm"]["email"].value;
var z = document.forms["myForm"]["psword1"].value;
var b = document.forms["myForm"]["psword2"].value;
var atpos = y.indexOf("@");
var dotpos = y.lastIndexOf(".");
if (w == null || w == "") {
alert("First name must be filled out");
return false;
}
else if (/[^a-zA-z'-]/.test(w)) {
alert("First Name not completed, please only use letters & spaces with either (') or (-).");
return false;
}
// Last name validation
else if (x == null || x == "") {
alert("Last name must be filled out");
return false;
}
else if (/[^a-zA-z'-]/.test(w)) {
alert("Last name not completed, please only use letters & spaces with either (') or (-).");
return false;
}
// Email validation
else if (y == null || y == "") {
alert("Email address must be completed");
return false;
}
else if (atpos< 1 || dotpos<atpos+2 || dotpos+2>=y.length) {
alert("Not a valid e-mail address");
return false;
}
// Password Validation
else if (z == null || z == "") {
alert("Password must be entered");
return false;
}
else if (z.length < 7 || !/[a-z]/.test(z) || !/[A-Z]/.test(z) || !/[0-9]/.test(z)) {
alert("Password must be a minimum of 8 characters, with at least 1 number, 1 lower case and 1 upper case letter.");
return false;
}
else if (z !== b) {
alert("Passwords do not match.");
return false;
}
}
任何帮助将不胜感激。
非常感谢,
绝望的编码员
连接脚本中的语法错误:
$dbcon = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR die ('Could not connect to MySQL:' .mysqli_connect_error());
language encoding
^^^^^^^^^^^^^^^^^
这不是有效的 PHP。由于您刚刚得到一个空白页,因此您可能已经display_errors并关闭了error_reporting。它们在开发/调试时永远不应该关闭。这几乎和使用@
抑制运算符一样糟糕——相当于把手指塞进耳朵里,然后说"拉拉拉拉听不到你的声音"。