как я могу запретить PHP возвращать неопределенную переменную ошибку каждый раз, когда я пытаюсь проверить переменную, если она имеет содержимое и что некоторая переменная еще не используется? В моей предыдущей настройке я могу проверить $ _POST ['email'], даже если я еще ничего не добавил. Он просто возвращает пустой или пустой результат. Вот как я хочу, чтобы моя PHP-настройка работала, но для меня жизнь, я не могу найти, как ее настроить. 🙁
Пример:
<?php if ($_POST['info'] != '') { // do some stuff } ?> <form method="post"> <input type="text" name="info" /> <input type="submit" /> </form>
Когда вы используете приведенный выше сценарий на одной странице PHP и запускаете его в моей текущей настройке, он возвращает ошибку неопределенной переменной . В моей предыдущей настройке этот скрипт работал как шарм. Может ли кто-нибудь осветить эту проблему. Если вам нужна дополнительная информация, просто скажите это, и я постараюсь добавить дополнительные сведения к этому сообщению.
Я знаю об проверке isset (), но я не хочу использовать его во всех моих сценариях. Я хочу, чтобы это не было ограничивающим переменными.
Скорее всего, это не ошибка, а предупреждение. Вы можете установить PHP, чтобы не отображать ошибки / предупреждения, если хотите. Просто добавьте это в начало вашего кода:
ini_set('display_errors', 0);
Наверху я рекомендую вам не лениться и не показывать в вашем коде какие-либо ошибки, предупреждения, уведомления вообще, лучше безопасно, чем жаль.
И предпочтительный способ сделать то, что вы хотите сделать, – это
<?php if (isset($_POST['info'])) { // do some stuff } ?> <form method="post"> <input type="text" name="info" /> <input type="submit" /> </form>
Вы можете использовать empty
функцию, которая возвращает true, если переменная не установлена или пуста (т.е. строка нулевой длины, 0, NULL, FALSE и т. Д.):
if(!empty($_POST['variable'])){ /* ... */ }
Это почти тот же тест, что и тот, который вы делаете сейчас, за исключением того, что он также вернет false (не запускает блок), без предупреждений, когда переменная не установлена.
Я иногда делал следующее, чтобы сделать сравнение и избегать предупреждения об неустановленной переменной:
if( @$_POST['variable'] == 'value' ) { ... }
Хотя PHP по-прежнему вызывает пользовательские обработчики ошибок, возможно, мне нужно пересмотреть эту стратегию.
Вы используете свой собственный сервер? Если это так, вы можете изменить error_reporting через PHP.INI. Над линией
"error_reporting = E_ALL;" (возможно, не E_ALL) Будет небольшая документация, объясняющая, какой тип ошибок вы можете показать.
Если вы используете общий сервер от веб-хостинговой компании, я считаю, что некоторые из них могут предложить быстрое управление PHP под учетной записью CP вашего веб-хостинга.
Надеюсь, я помог; /
ps. Если у вас есть собственный сервер, вам придется перезапустить Apache. Я не уверен, как это делается в Ubunto (если это то, что вы используете), но для CentOS это:
/sbin/service httpd restart
Переменная будет всегда SET, пока вы отправили form
.
Поэтому лучше проверить переменную не empty
.
if(!empty($_POST['var']))
Если вы хотите установить $ _POST vars, наличие большого количества этих утверждений действительно загромождает ваш код:
if (isset($_POST['info'])) $info = $_POST['info']; ... etc....
Как насчет этого?
function setPostVar( &$v ) { $trace = debug_backtrace(); $vLine = file( __FILE__ ); $fLine = $vLine[ $trace[0]['line'] - 1 ]; preg_match( "#\\$(\w+)#", $fLine, $match ); eval("\$v = isset(\$_POST[\"$match[1]\"])?\$_POST[\"$match[1]\"]:'';"); }
Теперь, пока вы счастливы, именовать переменные, похожие на ваши POST-вары
ie. $Foo = $_POST['Foo'];
вы можете просто сделать это:
setPostVar($Foo); // equivalent to if(isset($_POST['Foo']) $Foo = $_POST['Foo']; setPostVar($Bar); // ditto setPostVar($Baz); // ditto