Php 登记表在手机中不起作用
我是一名计算机专业的学生,我正在为我的论文开发一个虚拟学习环境系统。 我在注册新用户时遇到问题。如果我在Firefox中使用它,一切都可以,但如果我尝试Chrome,我的数据库中只会出现一条空记录。我的一个朋友也在他的智能手机上试用过,但效果并不理想 这是我的表格代码:Php 登记表在手机中不起作用,php,mysql,forms,google-chrome,Php,Mysql,Forms,Google Chrome,我是一名计算机专业的学生,我正在为我的论文开发一个虚拟学习环境系统。 我在注册新用户时遇到问题。如果我在Firefox中使用它,一切都可以,但如果我尝试Chrome,我的数据库中只会出现一条空记录。我的一个朋友也在他的智能手机上试用过,但效果并不理想 这是我的表格代码: <form id="register_form" method="post" action="register.php" enctype="plain/text"> <fieldset class="reg1"
<form id="register_form" method="post" action="register.php" enctype="plain/text">
<fieldset class="reg1">
<h2>Student registration form</h2>
<div class="line">
<label for="Student_id">Student id*:</label>
<input type="text" name="Student_id" id="Student_id" size="20" />
</div>
<div class="line">
<label for="Title">Title:</label>
<select name="Title" id="Title">
<option value=""></option>
<option value="Ms">Ms</option>
<option value="Miss">Miss</option>
<option value="Mrs">Mrs</option>
<option value="Mr">Mr</option>
</select>
</div>
<div class="line">
<label for="First_name">First name*:</label>
<input type="text" name="First_name" id="First_name" size="40" />
</div>
<div class="line">
<label for="Middle_name">Middle name:</label>
<input type="text" name="Middle_name" id="Middle_name" size="40" />
</div>
<div class="line">
<label for="Last_name">Surname*:</label>
<input type="text" name="Last_name" id="Last_name" size="40" />
</div>
<div class="line">
<label for="bDay">Date of birth*: </label>
Day: <input type="text" name="bDay" id="bDay" size="3" /> Month: <input type="text" name="bMonth" id="bMonth" size="3" /> Year: <input type="text" name="bYear" id="bYear" size="5" />
</div>
<div class="line">
<label for="gender">Gender*: </label>
<label for="male">Male</label>
<input type="radio" name="gender" id="male" value="male" />
<label for="Female">Female</label>
<input type="radio" name="gender" id="female" value="female" />
</div>
<div class="line">
<label for="email">Email*:</label>
<input type="text" name="email" id="email" size="40" />
</div>
<div class="line">
<label for="Town">Town:</label>
<input type="text" name="Town" id="Town" size="40" />
</div>
<div class="line">
<label for="password">Password*:</label>
<input type="password" name="password" id="password" size="40" /></p>
<div class="line">
<label for="cpassword2">Re-enter your password*:</label>
<input type="password" name="cpassword2" id="cpassword2" size="40" /></p>
</div>
<div class="line2">
<button type="submit">Register</button><button type="reset">Clear</button>
</div>
</fieldset>
</form>
学生登记表
学生证*:
标题:
太太
错过
夫人
先生
姓名*:
中名:
姓*:
出生日期*:
日:月:年:
性别*:
男性
女性
电邮*:
城镇:
密码*:
重新输入您的密码*:
寄存器清除器
下面是PHP脚本:
<?php
$student_id = $_POST['Student_id'];
$title = $_POST['Title'];
$firstName = $_POST['First_name'];
$middleName = $_POST['Middle_name'];
$lastName = $_POST['Last_name'];
$password = $_POST['password'];
$gender = $_POST['Gender'];
$bDay = $_POST['bDay'];
$bMonth = $_POST['bMonth'];
$bYear = $_POST['bYear'];
$email = $_POST['email'];
$town = $_POST['Town'];
$encpassword=md5($cpassword);
// CONNECT TO DATABASE
$link = mysql_connect ("xxx.xxx.xxx.xxx", "u", "p");
mysql_select_db ("XXX") or die("Database error: cannot connect to the database". mysql_error());
$query="SELECT * FROM Student WHERE Student_id='$student_id'";
$result=mysql_query($query);
$count=mysql_num_rows($result);
if($count==1){
print "<h2>Student with the ID <i>$student_id</i> already exists. Please return to the <a href='register.html'>Register</a> page and provide correct data.</h2>";
}
else {
$query = "insert into Student (Student_id, Student_firstName, Student_middleName, Student_surname, DOB, Title, Email, Password, Town, Student_pic)
values ('$student_id','$firstName', '$middleName', '$lastName', '$bYear-$bMonth-$bDay', '$title', '$email', '$encpassword', '$town', '$student_pic')";
$result = mysql_query ($query);
print "<h2>$firstName $lastName has been succesfully registered!</h2><br/><h3>Return to the <a href='index.html'>login page</a>.</h3>";
}
?>
Chrome似乎不喜欢表单标签上的
enctype='text/plain'
。移除它,它应该会工作
似乎有人就此事提交了一份bug报告:而且- enctype标记完全受
铬和它是绝对的
不需要删除此项。
- HTML文件中不需要更改
- 我在文章中发现了一些语义错误 你的PHP文件是什么阻止了 它停止工作了。它们是:
$gender=$\u POST['gender']代码>
HTML文件中的表单发布性别(用小写字母“g”而不是用大写字母“g”来发布性别)
更正代码:$gender=$\u POST['gender']代码>
您的代码:$encpassword=md5($\u POST['cpassword'])代码>
同样,表单不会发布cpassword实体。我不知道您是否打算从第一个密码框或第二个(验证)密码框中检索密码。但是,当您将两者都发布到PHP页面时,更正的代码可能是
$encpassword=md5($_POST['password'])代码>
或
$encpassword=md5($_POST['cpassword2'])代码>
你只需要一个,两个都可以
在SQL insert查询中,传递的是在此之前未声明的$student\u pic
值。请注意,您的HTML页面也没有发布用于此类型变量的值。声明变量$student\u pic
,并在通过SQL insert语句传递其值之前向其传递一个值
有了以上的改变,就没有问题了,我没有遇到任何问题。我还创建了一个数据库,并尝试了所有的工作
以下是更正后的代码:
<?php
$student_id = $_POST['Student_id'];
$title = $_POST['Title'];
$firstName = $_POST['First_name'];
$middleName = $_POST['Middle_name'];
$lastName = $_POST['Last_name'];
$password = $_POST['password'];
$gender = $_POST['gender'];
$bDay = $_POST['bDay'];
$bMonth = $_POST['bMonth'];
$bYear = $_POST['bYear'];
$email = $_POST['email'];
$town = $_POST['Town'];
$student_pic = 'test';
$encpassword=md5($_POST['password']);
// CONNECT TO DATABASE
$link = mysql_connect ("localhost", "testU", "testP");
mysql_select_db ("testdb") or die("Database error: cannot connect to the database". mysql_error());
$query="SELECT * FROM Student WHERE Student_id='$student_id'";
$result=mysql_query($query);
$count=mysql_num_rows($result);
if($count==1){
print "<h2>Student with the ID <i>$student_id</i> already exists. Please return to the <a href='register.html'>Register</a> page and provide correct data.</h2>";
}
else {
$query = "insert into Student (Student_id, Student_firstName, Student_middleName, Student_surname, DOB, Title, Email, Password, Town, Student_pic)
values ('$student_id','$firstName', '$middleName', '$lastName', '$bYear-$bMonth-$bDay', '$title', '$email', '$encpassword', '$town', '$student_pic')";
$result = mysql_query ($query);
print "<h2>$firstName $lastName has been succesfully registered!</h2><br/><h3>Return to the <a href='alex.html'>login page</a>.</h3>";
}
?>
我想我已经解决了!以下是谷歌Chrome论坛上的建议:
我使用JavaScript首先检测浏览器,如果是Chrome浏览器,则在新选项卡中提交。瞧
如果有人需要,下面是代码:
<script type="text/javascript">
function checkBrowser(){
var nAgt = navigator.userAgent;
var verOffset;
// In Chrome, the true version is after "Chrome"
if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
submitForm('_newtab');
}
else{ submitForm('_self');}
}
function submitForm(targetForm){
document.register_form.target=targetForm;
document.register_form.submit();
}
</script>
函数checkBrowser(){
var nAgt=navigator.userAgent;
var补偿;
//在Chrome中,真正的版本在“Chrome”之后
如果((verOffset=nAgt.indexOf(“Chrome”)!=-1){
提交表格(“新标签”);
}
else{submitForm('u self');}
}
函数提交表单(targetForm){
document.register\u form.target=targetForm;
文件。登记表。提交();
}
当然,您需要将onclick=“javascript:checkBrowser()”添加到表单中的按钮。
似乎效果不错-我希望这不会改变:)
谢谢大家的帮助 我刚刚做了,但没用:/I我还检查了IE中的网站,它工作正常。但是Chrome仍然有一个问题:/还有其他想法吗?没有其他想法,对不起-我的测试站点在Chrome中不工作,但是删除它完全解决了问题。令人惊讶的是,它开始工作:)似乎需要更多的时间:D这是我永远不会理解的关于计算机的事情:)但是无论如何,wielkie dzięki za pomoc;)不要看PHP——我在这里删除了一些代码,这就是为什么一些小东西不匹配的原因。最初的PHP代码是正确的——它在Firefox和IE中都能工作,所以这不是服务器端的问题。Chrome有点问题。我刚刚在Google Chrome帮助论坛上遇到过这样的讨论:显然大多数人对表单和空POST变量都有问题…:/顺便说一句,它又停止工作了。我不知道发生了什么事。昨天我测试了它,它成功了。今天我再试一次,问题又出现了。。。