Код (Text): <?php session_start(); define( '_JEXEC', 1 ); if(isset($_POST['submit'])){ if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} } if (empty($login) or empty($password)){ exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!"); } $login = mysql_real_escape_string($login); $password = mysql_real_escape_string($password); $login = trim($login); $password = trim($password); include ("connect.php"); if (isset ($login, $password)){ $salt = array('salt_login', 'salt_password'); $table = 'users'; $pattern = 'SELECT ?c FROM ?t LIMIT 1'; $data = array($salt, $table); $myrow = mysql_query($pattern, $data, $db); $result = mysql_fetch_array ($myrow); echo $result['salt_login']; } } ?> У меня 3 вопроса: 1 Вопрос. При попытке создания placeholder'а у меня вылазят ошибки (Подсвеченно красным) Warning: Wrong parameter count for mysql_query() in ...\www\admin\auth.php on line 22 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ...\www\admin\auth.php on line 23 В оригинале : Код (Text): $table = 'table'; $list = array('раз', 'два', 'три'); $pattern = 'INSERT INTO ?table VALUES (?list)'; $data = array($table, $list); $db->query($pattern, $data); Так как у меня база MYSQL => функция query(); не работает. Я заменил ее на mysql_query();. И в том и в другом случае выдает ошибку : Fatal error: Call to a member function query() on a non-object В чем ошибка, я понимаю параметры не правельно указанны, connect.php полностью функционален. 2 Вопрос. На мой взгляд шифровка безопасна: $salt = сгенерированна случайна и у каждого пользователя своя. $password = md5(md5($salt).md5($pass)); Могут ли ее взломать, в случае попадания в хакеру хэша пароля? 3 Вопрос. Функция по сути нужна, если есть .htachess? define( '_JEXEC', 1 ); И можете подсказать какие - нибудь средства защиты от взлома.
А нужно просто научится хотя-бы копировать текст ошибки/варнинга в гугл. mysql_query не тащит плейсхолдеры. переменная $db это не объект, а ресурс с информацией о подклучении к мускулу. Так что использование $db->query не работает. Плейсхолдеры-да, они спасают, чтобы их использовать нужна обертка -- PDO или DBSimple. Так как у вас джумла--заюзайте фреймворк JFactory, получите с помощью JFactory объект PDO и с ним уже работайте. На счет взломать-все можно, это лишь вопрос времени. Если есть хеш и известен метод хеширования то на кластере за месяц можно сбрутить пароль из хеша, но это никому не надо, зачем такие сложности всего из-за одного пароля, проще найти/купить приватный инъект в установленном компоненте и проэксплуатировать