Регистрационная форма не работает в мобильном телефоне Chrome - PullRequest
0 голосов
/ 30 марта 2011

Я студент по вычислительной технике и работаю над системой виртуальной учебной среды для своей диссертации. У меня проблема с регистрацией новых пользователей. Если я использую его в 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>";
    }
?>

Понятия не имею, что происходит. Я слышал, что использование & nbsp может вызвать проблемы в Chrome, но у меня также есть & nbsp в моем сценарии регистрации, который прекрасно работает в Chrome. У кого-нибудь была такая же проблема? Спасибо за любую помощь!

Ответы [ 3 ]

2 голосов
/ 30 марта 2011

Chrome не нравится enctype='text/plain' в теге формы. Удалите его, и оно должно работать.

Похоже, кто-то даже подал отчет об ошибке: ошибка 1 и ошибка 2

0 голосов
/ 31 марта 2011

Я думаю, что решил это!Следуя советам на форумах 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 ()" к кнопке в вашей форме.Кажется, работает хорошо - я надеюсь, что это не изменится:)

Спасибо всем за помощь!

0 голосов
/ 31 марта 2011
  • Тег enctype полностью поддерживается Хром и это абсолютно Нет необходимости удалять это.
    • Никаких изменений в файле HTML не требуется.
    • Я обнаружил некоторые семантические ошибки в ваш PHP-файл, который помешал это с работы. Это:

Ваш код: $gender = $_POST['Gender'];

Форма в HTML-файле содержит пол (строчная буква "g", а не пол с прописной буквой "G").

Исправленный код: $gender = $_POST['gender'];

Ваш код: $encpassword=md5($_POST['cpassword']);

Опять же, форма не публикует сущность cpassword. Я не знаю, намереваетесь ли вы восстановить пароль из первого поля пароля или второго (проверочного) поля пароля. Однако, поскольку вы публикуете обе страницы на PHP, исправленный код будет либо

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

ИЛИ

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

Привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...