Да уж. Вэб программисты - это особая каста небожителей
. Даже в носу не будут ковыряться если за это никто не платит.
При этом пользуются варезным софтом, который кто-то взломал и выложил бесплатно. Тот же ShopCMS Vip версии в пользовании у многих потому, что кто-то выложил его в сети. И популярным скрипт стал после появления keygena, а потом и Вип версии в свободном доступе. Сейчас его популярность
идет к нулю (Динамика установок «ShopCMS»). Это видно и по активности на этом форуме - единственном месте, где еще хоть что-то можно найти полезное. Интерес к скрипту остался лишь у тех, кто стал "счастливым" пользователем.
В скором времени ShopCMS ждет забвение. Так почему не дать людям, хотя бы активным участникам с этого форума, вполне рабочий продукт? Посмотрите на бесплатный
Opencart, который изначально в 100 раз функциональнее, имеет множество дополнений бесплатных и платных (
многие сложные платные модули стоят дешевле, чем десять строчек кода к ShopCMS, увеличивающих его функционал на 0,1%). ShopCMS Vip сейчас стоит 100$ (ранее 300$), Cs-Cart стоит 385$. Вы видели, что может Cs-Cart "из коробки"? Советую посмотреть. Так что единственным последствием от появления "допиленной" версии ShopCMS будет возрастание его популярности и количества клиентов которые будут приносить вам какую-никакую денежку потому, что всегда нужно что-то улучшить изменить добавить.
А допотопным скриптом (который изначально проблемный) никто сейчас, в здравом рассудке, пользоваться не будет потому, что полно альтернатив.
Теперь немного об ошибках
WARNING: in_array() [<a href='function.in-array'>function.in-array</a>]: Wrong datatype for second argument
Line: 311
File: /public_html/index.php
Эта некритическая ошибка возникает когда авторизированный пользователь "бродит" по сайту. Причина код
if (isset($_SESSION["log"]) && in_array(100, $relaccess))
в index.php, в которой проверяется наличие значения (100) в массиве (часть кода
in_array(100, $relaccess)) .
Переменная $relaccess должна быть массивом, а содержит булевое значение FALSE. Причина этого кроется выше, в коде
$relaccess = checklogin(); // функция checklogin() возвращает не то что нужно!
Смотрим что там в functions.php?
В общем функция возвращает массив только для админов (потому, что только у них есть в базе привилегии, которые и проверяются
in_array(100, $relaccess), для всех простых пользователей возвращается
FALSE.Чтобы исправить нужно проверить переменную $rls, является ли она массивом и если нет - вернуть пустой массив.
function checklogin() {
$rls = array();
if (isset($_SESSION["log"])) //look for user in the database
{
$q = db_query("select cust_password, actions FROM ".CUSTOMERS_TABLE." WHERE Login='".xEscSQL($_SESSION["log"])."'");
$row = db_fetch_row($q); //found customer - check password
if (!$row || !isset($_SESSION["pass"]) || $row[0]!=$_SESSION["pass"]) //unauthorized access
{
unset($_SESSION["log"]);
unset($_SESSION["pass"]);
//session_unregister("log"); //calling session_unregister() is required since unset() may not work on some systems
//session_unregister("pass");
}else{
$rls = unserialize($row[1]);
unset($row);
# fix log errors WARNING: in_array() expects parameter 2 to be array, boolean given
if(!is_array($rls))
{
$rls = array();
}
}
}
return $rls;
}
Рабочий класс
asido. Замените содержимое папки asido на содержимое архива
asido.zip 16.13К
48 Количество загрузок:badisoft, вы ведь все равно больше всех копаетесь в скрипте давайте я вам дам все наработки, может и получиться все-таки что-то путевое.