Php работает с ajax на вкладке network без ошибок...
Всем привет,
У меня есть php-файл, подключающийся к phpmyadmin на xampp. Я установил пароль localhost на "пароль", я запускаю скрипт с ajax, и он действительно работает, потому что я тестировал его с помощью filecreate. Я не получаю никаких ошибок, и все, что я хочу сделать, это проверить и посмотреть, существует ли электронное письмо, а если нет, то создать строку в базе данных.
<?php // Connect to Phpmyadmin database localhost. $hostname = "localhost";//"";127.0.0.1 $username = "root"; $password = "password";//"password"; $dbname = "test"; $conn = new mysqli($hostname, $username, $password, $dbname); if($conn -> connect_error) { die("Connection failed: " . $conn -> connect_error); } // USED to CHANGE the db. - (mysqli_select_db($con, "test") or die()); /* Check to make all fields entered -make sure submitted- #2*/ if(isset($_POST["register"])) { if(!$_POST["email"] | !$_POST["password"] | !$_POST["password2"]) { die("You did not fill in all the fields"); } /* do escape strings for SQL injection */ $emailsafe = mysqli_real_escape_string($conn, $_POST["email"]); $passsafe = mysqli_real_escape_string($conn, $_POST["password"]); $pass2safe = mysqli_real_escape_string($conn, $_POST["password2"]); /* Check and see if email EXISTS in db. */ /* Insert email in db if does not exist */ $sql = "SELECT email FROM users WHERE email = '$emailsafe'";//limit 1 $result = $conn->query($sql) or die("invalid email check " . mysqli_error($conn)); $numrows = mysqli_num_rows($result); if($numrows != 0) { die("Sorry the email " . $_POST["email"] . "is already in use"); } // check if passwords both match if($_POST["password"] != $_POST["password2"]) { die("Passwords did NOT match"); } // if passwords match encrypt $hashedpass = password_hash($passsafe, PASSWORD_DEFAULT); // With everything escaped and hashed INSERT into db. $sqlINSERT = "INSERT INTO users(email, password) " . "VALUES('" . $emailsafe ."','". $hashedpass ."')"; if($query = $conn->query($sqlINSERT)=== TRUE) { echo '<script type="text/javascript">alert("Successfully INSERTed");</script>'; } else { die("Unsuccessful"); } $conn->close(); ?>
Что я уже пробовал:
Я запустил свой php с ajax, и он успешно создает файл, так что я знаю, что он работает. Я хотел настроить отладку PHP с помощью atom или visual studio, но мне это не удалось успешно сделать... Я попытался с помощью отладчика xdebug так что я просто использовать вкладку Сеть inchrome найти, если существуют ошибки.
Я хотел бы иметь возможность запускать отладку построчно я использую xampp по какой-то причине моя сетевая вкладка заставляет меня использовать mysqli я думал, что новейший php просто использовал mysql я скачал php7 и положил его на свой жесткий диск, но не было php.ini для установки xdebug. Я нашел php.ini в xampp, но это не совсем правильно. Я также скачал новейший xampp, думая, что это проблема.. пакеты на atom следовали многим различным руководствам онлайн, но ничего не было успешным.
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
PHP: SQL-инъекция - руководство пользователя[^]
РНР: Подготовленные инструкции и хранимые процедуры - руководство пользователя[^]
Richard Deeming
Кроме того, вы храните пароли в виде обычного текста. Не делай этого!
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]
PHP даже имеет встроенные функции, которые помогут вам сделать все правильно:
PHP: password_hash[^]
РНР: функцию password_verify[^]