За последние 24 часа нас посетил 18401 программист и 1606 роботов. Сейчас ищут 950 программистов ...

Убрать ошибку php

Тема в разделе "Прочие вопросы по PHP", создана пользователем Stokmam, 30 окт 2013.

  1. Stokmam

    Stokmam Новичок

    С нами с:
    27 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    Включил отображение ошибок, выбило ошибку Notice: Undefined index: act in на строку:

    Код (Text):
    1. if(isset($_POST['act'])) $act=htmlspecialchars($_POST['act']); else $act=htmlspecialchars($_GET['act']);
    Как ее убрать?
     
  2. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    $_GET['act'] видимо тоже не существует.
     
  3. Stokmam

    Stokmam Новичок

    С нами с:
    27 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    ошибка вылазит когда get не задан в адресной строке.. Тоесть если перейти по адресу index.php
     
  4. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    ну, я про то и говорю. Скрипт проверяет POST, но не проверяет GET. Можно к примеру обратиться к $_REQUEST, либо добавить условие isset($_GET['act'])
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    if isset(post)
    // post
    elseif isset(get)
    // get
    else
    // empty string
     
  6. Stokmam

    Stokmam Новичок

    С нами с:
    27 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    а можно подробней куда что добавлять.. ?
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    слушай, здесь не школа. купи/скачай книжку типа "php для чайников"

    Добавлено спустя 1 минуту 41 секунду:
    всеобъемлющая документация по PHP, в т.ч. на русском языке на сайте php.net
     
  8. Stokmam

    Stokmam Новичок

    С нами с:
    27 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    Зачем тогда этот форум? Если есть столько книжек по php
     
  9. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Тебе дали ответ и пример, но судя по твоим вопросам проблемы даже с базовым синтаксисом языка. Посему сначала книжка.
     
  10. Stokmam

    Stokmam Новичок

    С нами с:
    27 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    я изменил код на :

    Код (Text):
    1. if(isset($_POST['act'])) $act=htmlspecialchars($_POST['act']); elseif(isset($_GET['act'])){
    2. $act = htmlspecialchars($_GET['act']);
    3. }
    но теперь вылезли ошибки Notice: Undefined variable: act in на case 'menu':
     
  11. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Код (PHP):
    1. if (isset($_POST['act'])) $act=htmlspecialchars($_POST['act']); 
    2. elseif (isset($_GET['act'])) $act = htmlspecialchars($_GET['act']);
    3. else $act = ''; 
    Notice: Undefined variable - это уведомление возникает, т.к. ты обращаешься к переменной которая не существует. Точно так же сначала у тебя возникало уведомление о том что нет ключа массива. Отсюда и проверка на существование isset() - есть, значит работаем, нет - значит пропускаем.
    Вариантов тут не много:
    1. Объявлять все переменные, следить за ними, что бы числовая переменная в середине скрипта не стала массивом, давать понятные имена и вообще обращаться бережно и аккуратно. Что гуд.
    2. Забить на notice ибо пхп)
     
  12. Stokmam

    Stokmam Новичок

    С нами с:
    27 окт 2013
    Сообщения:
    12
    Симпатии:
    0
    Спасибо, помогло :)
     
  13. deblogger

    deblogger Новичок

    С нами с:
    11 июл 2013
    Сообщения:
    200
    Симпатии:
    0
    Ошибка в тексте. В оригинале он такой:

    "Зачем, например, учить географию, если есть извозчики"

    Обычно на этом цитату заканчивают. Однако далее Митрофанушка продолжил:

    "— это-таки и наука не дворянская"

    Вот так. Не дворянская это занятие - читать ману. Пусть извозчики прочтут и расскажут.

    Добавлено спустя 21 минуту 46 секунд:
    Для тех кто затрудняется с ответом на вопрос закоренелого халявщика "а зачем тогда нужны форумы" он таков:

    форумы нужны для обмена идеями и решениями.

    Например вместо

    Код (Text):
    1. if(isset($_POST['act'])) $act=htmlspecialchars($_POST['act']); else if(isset($_GET['act'])) $act=htmlspecialchars($_GET['act']);
    перечисляете все переменные которые надо проверить и где:

    Код (Text):
    1. $keys = array('post'=>'act', 'get'=>'act', 'post'=>'defect', 'get'=>'noeffect');
    2.  
    3. // и проверяете в цикле
    4. // в котором будут созданы одноименные ключам массива
    5. // переменные как переменные
    6.  
    7. foreach($keys as $func => $arg) ${$arg} = htmlspecialchars($func($arg));
    8.  
    9. // и значения которых будут либо равны значениям
    10. // соответствующих элементов выбранного массива
    11. // либо null что укажет на отсутствие такого элемента в массиве
    12. // что выполняется в соответствующих запросу функциях
    13.  
    14. function post($arg) {
    15.   return(array_key_exists($arg, $_POST) ? $_POST[$arg] : null;
    16. }
    17.  
    18. function get($arg) {
    19.   return(array_key_exists($arg, $_GET) ? $_GET[$arg] : null;
    20. }
    Перечисление всех ожидаемых ключей дает возможность оперировать полученным набором данных легко и просто:

    if($noeffect) {

    if(!$act) redirect('home');