php не может выбрать базу данных на MySQL для страницы входа - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь создать страницу входа для своего веб-сайта, и она работает на xampp, но когда я переключаюсь на сервер, он не выбирает базу данных.Я также использую хостинг namecheaps.Вот мой php код: https://pastebin.com/tSBxJpy9 `

<?php

ob_start();
$host="localhost";  
$username="username";
$password="password";  
$db_name="suffix_login";
$tbl_name="members";
$link = mysqli_connect("localhost", "username", "password", "suffix_login");


mysqli_connect("$host", "$username", "$password", "login")or die("cannot connect");
mysqli_select_db("$link" ,"$db_name")or die("cannot select DB");


$myusername=$_POST['myusernamea'];
$mypassword=$_POST['mypassworda'];


$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysqli_real_escape_string($link ,$myusername);
$mypassword = mysqli_real_escape_string($link ,$mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysqli_query($link ,$sql);


$count=mysqli_num_rows($result);



if($count==1){


$_SESSION['myusername'] = $myusername;
$_SESSION['mypassword'] = $mypassword;
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}

ob_end_flush();
?>`

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Существует 4 способа выбора базы данных:

  • в вызове mysqli_connect () (который вы уже делаете)
  • через mysqli_select_db (), который завершается ошибкой
  • в SQL - mysqli_query($link, "use $dbname");
  • или просто путем ссылки на имя базы данных в качестве префикса к таблице: SELECT * FROM my_db.a_table

Так что в приведенном выше коде mysqli_select_db несколькоизлишний.Но причина его неудачи в том, что вы указали $link в своем вызове mysqli_select_db (), который преобразует объект $ link в строку и разбивает его в процессе.Измените свой код на:

 mysqli_select_db($link,"$db_name")or die("cannot select DB");

и удалите второй вызов mysqli_connect ()

. И, пожалуйста, НЕ ИСПОЛЬЗУЙТЕ здесь stripslashes ().

И, пожалуйста, узнайте, каксоль и хэш-пароли.

0 голосов
/ 07 июня 2018

Вот исправление:

<?php

ob_start();
$host="localhost";  
$username="username";
$password="password";  
$db_name="suffix_login";
$tbl_name="members";
$link = mysqli_connect($host, $username, $password, $db_name);

...
0 голосов
/ 07 июня 2018

Вы передаете строки, а не переменные, смотрите:

$link = mysqli_connect("localhost", "username", "password", "suffix_login");

Также присутствует обычная уязвимость атаки SQL-инъекций.Попробуйте перейти на использование подготовленных операторов и связанных параметров.Смотри здесь https://phpdelusions.net/pdo#prepared

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