Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите пожалуйста,что не так?
Форумы портала PHP.SU » PHP » Программирование на PHP » Помогите пожалуйста,что не так?

Страниц (1): [1]
 

1. goldclick - 30 Декабря, 2009 - 21:52:47 - перейти к сообщению
Добрый вечер или ночи!
Подскажите,что не так в коде меню?
Видно только "Главная" и "Выход",а остальное нет.

PHP:
скопировать код в буфер обмена
  1. <?
  2. global $user_rights;
  3.  
  4. echo '<tr><td width=5 class=menu1>&nbsp;</td>';
  5. echo '<td class=menu2><a href="index.php">'.($_REQUEST['action']==''?'<b>Главная</b>':'Главная').'</a></td></tr>';
  6. echo '<tr><td colspan=2 height=4></td></tr>';
  7.  
  8.  
  9. if($user_rights['stat']){
  10.         echo '<tr><td width=5 class=menu1>&nbsp;</td>';
  11.         echo '<td class=menu2><a href="index.php?action=stat">'.($_REQUEST['action']=='stat'?'<b>':'').'Статистика'.($_REQUEST['action']=='stat'?'</b>':'').'</a></td></tr>';
  12.         echo '<tr><td height=4></td></tr>';
  13. }
  14. echo '<tr><td colspan=2 height=4><hr class="hr1"></td></tr>';
  15.  
  16. if($user_rights['rss_management']){
  17.         echo '<tr><td width=5 class=menu6>&nbsp;</td>';
  18.         echo '<td class=menu2><a href="index.php?action=rss_management">'.($_REQUEST['action']=='rss_management'?'<b>':'').'Управление RSS'.($_REQUEST['action']=='rss_management'?'</b>':'').'</a></td></tr>';
  19.         echo '<tr><td height=4></td></tr>';
  20.  
  21. }
  22.  
  23. if($user_rights['user_management']){
  24.         echo '<tr><td width=5 class=menu4>&nbsp;</td>';
  25.         echo '<td class=menu2><a href="index.php?action=user_management">'.($_REQUEST['action']=='user_management'?'<b>':'').'Управление&nbsp;пользователями'.($_REQUEST['action']=='user_management'?'</b>':'').'</a></td></tr>';
  26.         echo '<tr><td colspan=2 height=4></td></tr>';
  27. }
  28. ////////////////////////////////////////////////////////////////////////////////
  29. //Вывод меню СУ "Управление сайтом"
  30. ////////////////////////////////////////////////////////////////////////////////
  31. if($user_rights['site_const_management']){
  32.         echo '<tr><td width=5 class=menu4>&nbsp;</td>';
  33.         echo '<td class=menu2><a href="index.php?action=site_const_management">'.($_REQUEST['action']=='site_const_management'?'<b>':'').'Управление&nbsp;сайтом'.($_REQUEST['action']=='site_const_management'?'</b>':'').'</a></td></tr>';
  34.         echo '<tr><td colspan=2 height=4></td></tr>';
  35. }
  36. if($user_rights['pma']){
  37.         echo '<tr><td width=5 class=menu4>&nbsp;</td>';
  38.         echo '<td class=menu2><a href="pma/">Управление&nbsp;mysql</a></td></tr>';
  39.         echo '<tr><td colspan=2 height=4></td></tr>';
  40. }
  41. echo '<tr><td colspan=2 height=4><hr class="hr1"></td></tr>';
  42. echo '<tr><td width=5 class=menu5>&nbsp;</td>';
  43. echo '<td class=menu2><a href="logout.php">Выход</a></td></tr>';
  44.  
  45.  
  46. ?>
2. Ammy - 31 Декабря, 2009 - 03:13:00 - перейти к сообщению
А что ещё должно быть видно, если "Главная" и "Выход" безусловлено выводятся по средствам echo? Остальной код - это условия, напрочь связанные с глобальной переменной (массивом?) $user_rights, определённой в самом начале потока. Если, например, в глобальном массиве $user_rights есть ключик stat, то будет вам статистика выведена. Проверяйте условия, права пользователя, и всё такое.

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. global $user_rights; // объявляем этой переменной глобальную область видимости.
  4.  
  5. if ($user_rights['meat']) echo 'Если тру, и ключик мясцо (meat) существует, то мы видим это.. ';
  6.  
  7.  


Запись "if ($user_rights['meat'])" эквивалентна "if (isset($user_rights['meat']))". В обоих случаях будет осуществляться проверка на cуществование ячейки meat в массиве $user_rights

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. global $user_rights; // объявляем этой переменной глобальную область видимости.
  4.  
  5. $user_rights['meat'] = 'Пользователю разрешено входить с мясом'; // добавляем ключик meat и строковое значение
  6.  
  7. if ($user_rights['meat']) echo 'Если тру, и ключик мясцо (meat) существует, то мы видим это.. ';
  8.  
  9. /*
  10.  Но не исключено, что ключики приделываются где-то за приделами этого скрипта! В этом случае лучше бы нам рассмотреть другую, основную часть скрипта, где выдаются пользователям права.
  11. */
  12.  
  13.  




P.S: Код заключайте в соответствующий тэг, чтобы он подсвечивался. Никто не будет ломать глаза.
3. Мелкий - 31 Декабря, 2009 - 11:15:11 - перейти к сообщению
Ammy пишет:
Запись "if ($user_rights['meat'])" эквивалентна "if (isset($user_rights['meat']))". В обоих случаях будет осуществляться проверка на cуществование ячейки

Не совсем так. Проверяет наличие isset, а "if ($user_rights['meat'])" проверяет meat на булевое значение, либо приводит к нему. А если такой переменной нет, то возбуждает предупреждение уровня Notice.
4. Champion - 31 Декабря, 2009 - 11:27:49 - перейти к сообщению
Ammy пишет:
"if ($user_rights['meat'])" эквивалентна "if (isset($user_rights['meat']))"

Поэксперементируй у себя:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $a = 0;
  3. if (isset($a)) echo 'isset';
  4. if ($a) echo 'Happy New Year';
5. JustUserR - 31 Декабря, 2009 - 12:40:06 - перейти к сообщению
Ammy пишет:
Запись "if ($user_rights['meat'])" эквивалентна "if (isset($user_rights['meat']))". В обоих случаях будет осуществляться проверка на cуществование ячейки meat в массиве $user_rights
В действительности это совершенно разные вещи - if проверяет на пустоту или ложность переменной (False "" 0 etc) а isset проверяет равна ли переменная NULL
6. Ammy - 31 Декабря, 2009 - 14:07:00 - перейти к сообщению
В данном то случае проверка наличия ключа и записи, прокатит любое из этих выражений. Однако А если в общем, то вещи разные, извиняюсь.
7. Champion - 31 Декабря, 2009 - 14:12:47 - перейти к сообщению
Какая разница? Если такой элемент массива есть и равен 0, то проверка даст false. Для проверки ключа есть еще
8. Ammy - 31 Декабря, 2009 - 14:19:43 - перейти к сообщению
Но у автора то точно нуля там быть не может, и не создана даже запись. Идёт обращение к несуществующим ячейкам в глобальной переменной (массиву). Я исхожу из основного положения, текущей темы, примера.. У меня одинаково срабатывают оба выражения..

А насчёт функции, приведённой тобою, могу сказать, что дело вкуса. Я бы не стала обращаться к подобного рода функциям в данном случае, здесь можно что-то проще, не так ли? Закатив глазки

С новым годом, кстати! Всех поздравляю с новым годом!!! )
9. Champion - 31 Декабря, 2009 - 14:40:06 - перейти к сообщению
Ладно, сознаюсь, я начал читать тему только с первого маленького сообщения. goldclick, оформляй код пожалуйста, а то помогать тебе захочет очень небольшое количество народу.

 

Powered by ExBB FM 1.0 RC1