Jquery ajax не будет отправлять переменные POST на php - PullRequest
0 голосов
/ 16 марта 2020

РЕДАКТИРОВАТЬ: Теперь я понимаю, что для перенаправления мне нужно использовать ajax в зависимости от ответа, который я получаю от php благодаря ADyson. Лучший ответ, спасибо, чувак, и всем спасибо за помощь.

Я пытался создать простую форму входа в систему на PHP, отправляя переменные запроса POST на PHP и аутентифицируясь с помощью MySQL. Я перепробовал все, такие как настройка xampp, размещение файла htaccess в той же папке, пробовал различный синтаксис ajax, но он все еще не работает. Я сделал это так просто, чтобы я мог легко отлаживать. Проблема в том, что срабатывает функция успеха, но переменные записи не отправляются в заголовок местоположения, а не go для регистрации. php. Вот код:

PHP

<?php
    require_once 'dbconnect.php';

    if (isset($_POST['nickname']) && !empty($_POST['nickname'])) {
        $nickname = $_POST['nickname'];
    }

    if (isset($_POST['password']) && !empty($_POST['password'])) {
        $password = $_POST['password'];
    }

    $sql = "SELECT nickname,password FROM users WHERE nickname = '$nickname' and password = '$password'";

    $result = mysqli_query($mysqli, $sql);
    $count = mysqli_num_rows($result);

    if ($count == 1) {

        header('location:register.php');

    } else {
        header("HTTP/1.1 500 Internal Server Error");
    }
?>

JS

$("#submitBtn").on("click",function(){
    $.ajax({
        type:"POST",
        url:"dologin.php", 
        data:{nickname:"alex",password:"123"},
        success:function(){
        alert("skata");
    }});
});

Ответы [ 2 ]

1 голос
/ 16 марта 2020

* ПРЕДУПРЕЖДЕНИЕ *

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

Все, что нужно сделать хакеру, это определить «пароль» как SQL Внедрение, которое изменяет базу данных, и вы можете раскрыть содержимое вашей базы данных хакеру

Кроме того, незашифрованные пароли не являются хорошим способом хранения данных для входа в систему, вместо этого используйте пароль ha sh.

Вы также можете рассмотреть возможность использования nonce для предотвращения атак XSRF, а также некоторого вида взлом паролей / механизм защиты DoS был бы разумным.


С учетом сказанного, вот способ заставить вашу форму пароля работать

Вы не можете выполнить перенаправление как часть запроса ajax, который может взаимодействовать с запросом это делает ajax вызов. Два контекста различны.

Что вы МОЖЕТЕ сделать, это вернуть значение из сценария PHP следующим образом:

   <?php 
       require_once 'dbconnect.php';

    if(isset($_POST['nickname']) && !empty($_POST['nickname'])) { $nickname =  $_POST['nickname']; }

    if(isset($_POST['password']) && !empty($_POST['password'])) { $password = $_POST['password']; }

    $sql = "SELECT nickname,password FROM users WHERE nickname = '$nickname' and password = '$password'";

    $result = mysqli_query($mysqli,$sql); $count = mysqli_num_rows($result);

    if($count==1){
         print_r("true");
    } else{
        print_r("false");   
     } ?>

в сочетании с способом синтаксического анализа выход

$("#submitBtn").on("click",function(){
    $.ajax({
        type:"POST",
        url:"dologin.php", 
        data:{nickname:"alex",password:"123"},
        success:function(result){
            if (result == "true") {
                window.location.href = "register.php";
            }

    }});
});
0 голосов
/ 16 марта 2020

Что вы можете сделать, это взять данные из файла php

success:function(data){ console.log(data); }

Также проверьте, возвращает ли запрос ровно одну строку? Я также не знаю, работает ли ваш dbconnect. php.

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