Я ужасен с PHP / SQL, поэтому любая помощь будет оценена.
В основном у меня есть форма, которая отправляет значения «firstname» и «surname» на другую страницу. То, что я хочу, чтобы эта страница была сделана, – это проверить, не указано ли имя пользователя в таблице «Участники». Если я хочу, чтобы он продолжал загружать эту страницу, но если они не находятся в базе данных, я хочу, чтобы зритель перенаправлялся на существующую страницу регистрации.
Вот код, над которым я работал, я не уверен, что я направляюсь в правильном направлении или нет.
<?php $con = mysql_connect("localhost","site","xxxxxxxx"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("site", $con); $query = "SELECT * FROM Members WHERE firstname='$_POST[firstname]' and surname='$_POST[surname]'"; $result = mysql_query($query); if ($result==$something) { echo "great success"; //user continues loading page } else { echo "fail"; //user is redirected to sign up page } ?>
Это сделает трюк:
<?php $con = mysql_connect( "localhost", "site", "xxxxxxxx" ); if ( !$con ) { die('Could not connect: ' . mysql_error()); } mysql_select_db("site", $con);
1-й, удалите часть впрыска sql, по крайней мере, так:
$firstname = strip_tags( $_POST[ 'firstname' ] ); $surname = strip_tags( $_POST[ 'surname' ] );
Во-вторых, я не изменил его, но вам нужно удалить *
и ввести только определенные значения, которые вы хотите загрузить. Даже если это все значения, пишите их вручную.
$query = "SELECT * FROM Members WHERE firstname='" . $firstname . "' and surname=' " . $surname. "'"; $result = mysql_query( $query );
3rd, вы можете проверить количество строк, если у вас есть какое-то значение, есть запись с этими переменными
if ( mysql_num_rows($result) >= 1 ) { // the page you want } else { // redirect user to another page header( "Location: signup.php" ); die; } ?>
Редактировать:
Подумайте о добавлении unique
запросов к вашему запросу. Что произойдет, если два пользователя имеют одинаковые имена и фамилии или если новый хочет присоединиться, но имя и фамилия уже находятся в db …
if (mysql_num_rows($result) == 1) { echo "great success"; //user continues loading page } else { echo "fail"; //user is redirected to sign up page }
Кроме того, ваш запрос подвержен SQL-инъекции большого времени
$rows = mysql_num_rows($results); if ($rows == 1) { echo "login successful"; //user continues loading page } else { header ('location: signup.php'); //user is redirected to sign up page }
Вы можете просто поместить header( "Location: host/site.php" )
в свою ветку else, а затем die ()
if(mysql_num_rows($result) > 0){ echo "great success"; //user continues loading page } else { echo "fail"; //user is redirected to sign up page }
использовать это