2011-03-30 109 views
0

我是一名计算学生,我正在为我的毕业论文开发虚拟学习环境系统。 我在注册新用户时遇到问题。如果我在Firefox中使用它,一切都可以,但如果我尝试Chrome浏览器 - 我的数据库中只有空记录。我的一位朋友也在他的智能手机上试用过它,但效果不佳。注册表格无法在Chrome和移动设备上工作

这里是我的表单代码:

<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*: &nbsp;</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*:&nbsp;</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中使用& nbsp会导致问题,但我的日志记录脚本中也有& nbsp,这在Chrome中可以正常工作。有没有人有同样的问题? 感谢您的帮助!

+0

是否有任何错误讯息? – eisberg 2011-03-30 14:20:32

回答

2

Chrome似乎不喜欢表单标签上的enctype='text/plain'。删除它,它应该工作。

好像有人甚至提交了一份bug报告一下:bug 1bug 2

+0

我刚刚这样做,但没有帮助:/我也检查了IE中的网站,它工作正常。但铬仍然有一个问题:/任何其他想法可能是错的? – Nagareboshi 2011-03-30 15:48:20

+0

没有其他的想法,抱歉 - 我的测试网站使用'enctype'在Chrome中不起作用,但是删除它完全解决了这个问题。 – 2011-03-30 15:55:41

+0

令人惊讶的是,它开始工作:)似乎在需要更多的时间:D这是我永远不会理解计算机的东西:)但无论如何,wielkiedziękiza pomoc;) – Nagareboshi 2011-03-30 18:20:02

0
  • 的ENCTYPE标签由 浏览器完全支持,这是绝对 不需要除去这一点。
    • HTML文件无需更改。
    • 我在 的PHP文件中发现了一些语义错误,它阻止了 的工作。它们是:

您的代码:$gender = $_POST['Gender'];

在HTML文件中的职位性别的形式(用小写字母 “G” 不是一个大写 “G” 性别)。

更正代码:$gender = $_POST['gender'];

您的代码:$encpassword=md5($_POST['cpassword']);

同样的形式不发表cpassword实体。我不知道是否打算从第一个密码框或第二个(验证)密码框中检索密码。然而,当你都张贴到PHP页面,更正后的代码是,要么

$encpassword=md5($_POST['password']);

OR

$encpassword=md5($_POST['cpassword2']);

你只需要一个,并且或者将工作。

在SQL插入查询中,您传递的是您尚未在此之前声明的值$student_pic。请注意,您的HTML页面不会发布适用于此类型变量的值。声明变量$student_pic并在通过SQL插入语句传递值之前将值传递给它。

随着上述变化,没有任何问题,以及我没有遇到任何问题。我还创建了一个数据库并尝试了所有的作品。

以下是更正代码:

<?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>"; 
    } 
?> 

问候

+0

不要看PHP - 我删除了一些位的代码在这里,所以这就是为什么小事不匹配。原始的PHP代码是正确的 - 它可以在Firefox和IE中使用,所以这不是服务器端问题。 Chrome有问题。 – Nagareboshi 2011-03-31 08:08:00

+0

我刚刚在Google Chrome浏览器帮助论坛上发现了这个讨论:http://www.google.com/support/forum/p/Chrome/thread?tid = 5baadfc42864bbf9&hl = en 显然,大多数人对表单有问题和空的POST变量...:/ – Nagareboshi 2011-03-31 08:18:25

+0

而且顺便说一句 - 它再次停止工作。我不知道发生了什么事。昨天我测试了它,它工作。今天我再次尝试,问题返回... – Nagareboshi 2011-03-31 08:29:45

0

我想我已经解决了它!遵循Google Chrome论坛上的建议:http://www.google.com/support/forum/p/Chrome/thread?tid=5baadfc42864bbf9&hl=en

我使用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> 

当然,你需要添加的onclick =“JavaScript的:checkBrowser()”在表单中的按钮。 似乎很好 - 我希望这不会改变:)

谢谢大家的帮助!

相关问题