У меня есть (2) PHP-скрипты: один написан на PHP 4.0, а второй написан на PHP 5.6 (мой провайдер обновил серверы, и теперь они работают только на PHP 5.6, поэтому мне пришлось конвертировать скрипт 4.0 в 5.6)
Однако, когда я использую сценарий PHP 4.0, до обновления ISP все работало идеально, но когда я использую сценарий PHP 5.6 (который был преобразован), этот сценарий не подключается к серверу mySQL и не возвращает никаких значений.
Мне интересно, может быть, что-то не так с начальными переменными или что-то отсутствует во втором скрипте PHP 5.6, который был преобразован из более раннего скрипта PHP 4.0
Спасибо
Вот (2) PHP-скрипты
Скрипт PHP 4.0
<?php
$userdb="var1";
$pass="var2";
$database="var3";
mysql_connect("sql.servername.com",$userdb,$pass);@mysql_select_db($database) or die ( header('location: status4.htm') );$match = "select id from USER_ACCOUNTS where username = '$username' and password = '$password'";
$qry = mysql_query($match)
or die ( header('location: status.htm?status=9') );
$num_rows = mysql_num_rows($qry);
// Valid Username and Password
if ($num_rows > 0) {
$qry = "SELECT * FROM USER_ACCOUNTS WHERE username like '%" . $username . "%'";
$res = mysql_query($qry);
$output='';while($row = mysql_fetch_assoc($res)){
// loop through all returned results
$output .= '&viewUsername=' . $row['viewUsername'] . '&viewPassword=' . $row['viewPassword'] . '&username=' . $row['username'] .
'&password=' . $row['password'] . '&name=' . $row['name'] . '&title=' . $row['title'] . '&email=' . $row['email'] . '&admin=' .
$row['admin'] . '&file=' . $row['file'] . '&file2=' . $row['file2'] . '&file3=' . $row['file3'] . '&file4=' . $row['file4'];
echo "&status=1";
echo $output;
}
}
?>
А вот и скрипт PHP 5.6
<?php
//error_reporting(1);
//ini_set('display_errors', '1');
// mysql connection
$db_host = 'sql.servername.com';
$db_user = 'var1';
$db_pass = 'var2';
$db_name = 'var3';
$dbh = new PDO('mysql:host='.$db_host.';dbname='.$db_name.';charset=utf8', $db_user, $db_pass);
// submit form
if (isset($_POST['submit']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$stmt = $dbh->prepare("SELECT * FROM USER_ACCOUNTS WHERE username = :username AND password = :password");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();
$number_of_rows = $stmt->fetchColumn();
// Valid Username and Password
if ($number_of_rows > 0)
{
$row = $stmt->fetchAll();
$output = '';
while($row)
{
// loop through all returned results
$output .= '&viewUsername=' . $row['viewUsername'] . '&viewPassword=' . $row['viewPassword'] . '&username=' . $row
['username'] . '&password=' . $row['password'] . '&name=' . $row['name'] . '&title=' . $row['title'] . '&email=' . $row['email'] .
'&admin=' . $row['admin'] . '&file=' . $row['file'] . '&file2=' . $row['file2'] . '&file3=' . $row['file3'] . '&file4=' . $row
['file4'];
echo "&status=1";
echo $output;
}
}
}
?>
Решил — просто замени $REMOTE_ADDR
с $_SERVER['REMOTE_ADDR']
в скрипте конвертировать из PHP 4.0 в PHP 5.6 🙂
Других решений пока нет …