Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 登记表在手机中不起作用_Php_Mysql_Forms_Google Chrome - Fatal编程技术网

Php 登记表在手机中不起作用

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"

我是一名计算机专业的学生,我正在为我的论文开发一个虚拟学习环境系统。 我在注册新用户时遇到问题。如果我在Firefox中使用它,一切都可以,但如果我尝试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似乎不喜欢表单标签上的
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变量都有问题…:/顺便说一句,它又停止工作了。我不知道发生了什么事。昨天我测试了它,它成功了。今天我再试一次,问题又出现了。。。