Я пытаюсь сделать страницу входа для своего сайта, и он работал на 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();
?>'
заранее спасибо
Существует четыре способа выбора базы данных:
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() здесь.
И, пожалуйста, узнайте, как солить и хэш-пароли.
Здесь исправление:
<?php
ob_start();
$host="localhost";
$username="username";
$password="password";
$db_name="suffix_login";
$tbl_name="members";
$link = mysqli_connect($host, $username, $password, $db_name);
...
Вы передаете строки, а не переменные, посмотрите:
$link = mysqli_connect("localhost", "username", "password", "suffix_login");
Кроме того, присутствует обычная уязвимость атаки SQL Injection. Попробуйте переключиться на использование подготовленных операторов и связанных параметров. См. Здесь https://phpdelusions.net/pdo#prepared