2016-04-01 4 views
0

У меня есть следующий HTML-файл, в котором пользователь вводит свое имя пользователя и пароль и нажимает кнопку отправки.Отправить форму сообщение для входа

<form Name ="form1" Method ="POST" ACTION = "userlogin.php" id="form1"> 
    <div id="main_body" class="full-width"> 
     <label>Username:</label> 
     <input type = "text" 
       id = "usernameLogin" 
       name="pat_username"> 
     <label>Password:</label> 
     <input type = "password" 
       id = "passwordLogin" 
       name="pat_password"> 
     <input type="submit" onclick="click_button_login()" value="Login" name="submit" id="submit"/> 
    </div> 
</form> 

Файл PHP должен подключаться к моей базе данных и проверять, являются ли введенные данные пользователями подлинными. Соединение с базой данных существует, поскольку я тестировал это раньше. После того как пользователь нажмет на кнопку отправки появляется эта ошибка: Cannot POST /http-services/emulator-webserver/ripple/userapp/x/C/xampp/htdocs/xampp/glove_project_php/www/userlogin.php

<?php 
if(isset($_POST["submit"])){ 
    $servername = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "dbname"; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 

    //Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 


    $newUsername = mysqli_real_escape_string($conn, $_POST['pat_username']); 
    $newPassword = mysqli_real_escape_string($conn, $_POST['pat_password']); 

    $result = $conn->query("SELECT * FROM tablename WHERE patient_username ='$newUsername' AND patient_password='$newPassword'"); 



    if (mysqli_num_rows($result)) { 
     header("Location: mainmenu.html");  
    } 
    else 
    {  
     header("Location: index.html"); 

    } 
    $conn->close(); 
} 
?> 

Есть другой способ вызова этого PHP-файл, чтобы работать на эмуляторе? Этот код отлично работает на localhost.

+1

[Ваш скрипт находится в опасности для SQL Injection атак.] (Http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php) Узнайте о запросах [подготовленных] (http://en.wikipedia.org/wiki/Prepared_statement) для [MySQLi] (http://php.net/manual/en/ mysqli.quickstart.prepared-statements.php). –

+0

Для обеспечения безопасности паролей воспользуйтесь встроенными функциями PHP (http://jayblanchard.net/proper_password_hashing_with_PHP.html). Если вы используете версию PHP менее 5.5, вы можете использовать 'password_hash()' [пакет совместимости] (https://github.com/ircmaxell/password_compat). –

ответ

0

Почему вы проверяете, существует ли $ _POST ["submit"] в супергрупповом $ _POST? Я считаю, что вы должны проверить, если переменные, отправляемые устанавливаются:

изменение:

if(isset($_POST["submit"])) 

к:

if ((isset($_POST["pat_username"]))&&(isset($_POST["pat_password"]))) 

и дайте мне знать, если ошибка не будет устранена.

+0

Я подумал, что при отправке формы проверьте код PHP. Я изменил эту строку, но я все еще получаю ту же ошибку :(Я застрял на этом целую вечность – user20051996

+0

@ user20051996 Я рекомендую вам сделать следующее: создать новую страницу под названием «userlogin2.php», изменить ACTION = «userlogin». php "в ACTION =" userlogin2.php ", а затем в userLogin2.php put: ";?> что вам нужно сделать сейчас отлаживайте то, что у вас есть, и когда у вас есть целая страница с кодом, который может потерпеть неудачу, проще тестировать по одной вещи за раз. Если userlogin2.php терпит неудачу, то вы сузили, что может быть проблемой, и если это не так, t fail, вы знаете, что проблема кроется в другой части вашего кода. – Webeng

+0

где я буду устанавливать « ";?> '? – user20051996

0
Your form, you should working on security and eliminating auto submission, this eliminates auto submission as form contains SESSION_ID() which are unique on web browsing session. 

    <Form Name ="form1" Method ="POST" ACTION = "userlogin.php" id="form1"> 
    <div id="main_body" class="full-width"> 
     <br> 
     <br>      
        <label>Username:</label> 
        <input type = "text" 
          id = "usernameLogin" 
          name="pat_username"> <br> 

       <br> <label>Password:</label> 
        <input type = "password" 
          id = "passwordLogin" 
          name="pat_password"> <br><button value="<?php echo session_id() ?>" type="submit" name="login_check">Login</button> 

    </div> 
    </Form> 

// ваша страница проверки входа в систему, существует так много риска для безопасности. Пароль должен быть зашифрован. Пожалуйста, используйте SALT, hash/md5/sha для шифрование. А также для использования запроса Sprintf как нравится этот его просто пример, хотя

##SPRINTF EXAMPLE CODE 
    //$query = sprintf('SELECT * FROM TABLE WHERE username = "%s" AND password = "%s"',mysql_real_escape_string($username),mysql_real_escape_string($password)); 

    #### EXAMPLE END HERE## 

    <?php 
    if(isset($_POST["login_check"]) && $_POST['login_check']==session_id()){ 
    $servername = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "dbname"; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 

    //Check connection 
    if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
    } 


$newUsername = mysqli_real_escape_string($conn, $_POST['pat_username']); 
$newPassword = mysqli_real_escape_string($conn, $_POST['pat_password']); 

$result = $conn->query("SELECT * FROM tablename WHERE patient_username ='$newUsername' AND patient_password='$newPassword'"); 



if (mysqli_num_rows($result)) { 
    header("Location: mainmenu.html");  
} 
else 
{  
    header("Location: index.html"); 

} 
$conn->close(); 
} 
?> 
+0

привет благодарю вас за вашу помощь, хотя у меня все еще есть такая же проблема: не удается POST/http-services/emulator-webserver/ripple/userapp/x/C/xampp/htdocs/xampp/glove_project_php/WWW/userlogin.php. есть ли у вас какие-либо другие советы? эта ошибка прослушивала меня в течение нескольких недель, и я не могу ее исправить :( – user20051996

Смежные вопросы