2015-11-19 3 views
0

Я тестирую локальную страницу базы данных входа на моем компьютере под LAMP. И хотя я могу подключиться к mysql с терминала, я не могу сделать это из php-скрипта. Я посмотрел всего в Интернете, но каждый, где я иду его просто следующий код в одном варианте или другойMySQL не подключается к базе данных

<!DOCTYPE HTML5> 
<html> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
    <link rel="stylesheet" type="text/css" href="style.css"> 
    <head> 
    </head> 
    <body> 

    <?php 

    $username = $_POST['username']; 
    $password = $_POST['password']; 

    /* connect to the db */ 
    $connection = mysql_connect('localhost', 'username', 'password') or die ("Connect error"); 
    mysql_select_db('myDatabase',$connection); 
    /* show tables */ 
    $res = mysql_query("SHOW DATABASES", $connection) or die ("No Show Database"); 
    while ($row = mysql_fetch_row($res)) 
    { 
     echo $row[0], '<br/>'; 
    } 

    ?> 

    </body> 
</html> 

Существует еще одна страница, которая принимает имя пользователя и пароль, а затем передать его на эту страницу с помощью метода POST, но эта страница мгновенно показывает мне ошибку Connect. I событие пробовал его с , если еще вместо или умереть, но все равно не удается подключиться.

+4

'или die (« Ошибка подключения »);' вам не поможет. 'или die (mysql_error())' будет, то же самое для 'или die (« No Show Database »);' –

+0

[Ваш скрипт подвергается риску для SQL-инъекций.] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

+2

Если вы можете, вы должны [прекратить использование 'mysql_ *' функций] (http://stackoverflow.com/questions/12859942/why-shouldnt- я потребительная MySQL-функция-в-PHP). [Эти расширения] (http://php.net/manual/en/migration70.removed-exts-sapis.php) были удалены в PHP 7. Узнайте о [подготовленном] (http://en.wikipedia.org/ wiki/Prepared_statement) для [PDO] (http://php.net/manual/en/pdo.prepared-statements.php) и [MySQLi] (http://php.net/manual/en/mysqli.quickstart .prepared-statements.php) и подумайте об использовании PDO, [это действительно не сложно] (http://jayblanchard.net/demystifying_php_pdo.html). –

ответ

5

Вы должны передать переменные в функцию соединения и показать содержательное описание ошибки:

$username = $_POST['username']; 
$password = $_POST['password']; 

/* connect to the db */ 
$connection = mysql_connect('localhost', $username, $password) or die(mysql_error()); 

Your script is at risk for SQL Injection Attacks. Если вы можете, вы должны stop using mysql_* functions. These extensions были удалены в PHP 7. Ознакомьтесь с инструкциями prepared для PDO и MySQLi и рассмотрите использование PDO, it's really not hard.

Вы действительно не хотите подключаться к своей базе данных таким образом, хотя это оставляет слишком много шансов. И когда вы используете пароли, вам действительно нужно использовать PHP built-in functions для защиты паролей. Если вы используете версию PHP менее 5.5, вы можете использовать password_hash()compatibility pack.

+0

Инъекции? Где? –

+0

Нечистые переменные передаются в функции базы данных @vp_arth. Я пытаюсь сбить его с перевала. –

+0

, если вы о 'user/pass' - его значение означает получение нечистых переменных (как есть). Но если вы спрашиваете о том, как «показать базы данных» без каких-либо конкатенаций может угрожать sql-инъекции? –

Смежные вопросы