Undefiend index

Karcho

Registered
Здравейте, moe ли да ми кажете защо като минах на хампп ми вади грешка Undefiend Index ако го напиша така:
if($_POST['submit']) {

}
Error undefiend index.
-----------------------------
if(isset($_POST['submit']) {

}
недава error.
Нещо в php.ini ли се пишеше.
Преди не даваше грешка като не бях с XAMPP.
 
kulov каза:
Сложи отгоре error_reporting(0);
Това е решение, но не много добро. Горещо препоръчвам когато правите даден сайт да слагате error reporting-а да е E_STRICT, защото едно такова просто прикриване на недефинирана променлива бави доста изпълнението на кода :)
 
Най-вероятно бутонът ти не се казва submit и затова вади грешка при първата проверка, а при втората не вади, защото проверява дали има такава променлива (а в случая няма). Провери дали бутонът ти се казва submit и дали метода е POST, а не GET. Друга идея на мен не ми идва :)
 
Попринцип if($_POST['submit']) не е препоръчително да се ползва, защото ако променливата е зададена, но има стойност 0 пак ще върне false.
Ако искаш все пак да махнеш грешката, отвори файла php.ini, намери къде се декларира error_reporting и го замени с error_reporting = E_ALL & ~E_NOTICE
 
adrian каза:
Най-вероятно бутонът ти не се казва submit и затова вади грешка при първата проверка, а при втората не вади, защото проверява дали има такава променлива (а в случая няма). Провери дали бутонът ти се казва submit и дали метода е POST, а не GET. Друга идея на мен не ми идва :)
Предполагам е уцелил името на индекса и метода, просто не е пратена POST заявка :) Затова дава и грешката.
Проверка дали променлива съществува или не се извършва със isSet :)

Едит: по-добре е пича да се научи как да пише правилно кода, а не да прикрива грешките си :)
 
Просто са ти включени грешките на апачето и това е добре. Просто грешката е елементарна. Може да си създаеш следния алгоритъм на работа ако искаш да не гърми :
Вариант 1:
Код:
if (!isset($_POST['index'])) $_POST['index'] = "";
/* Това прави следното ако нямаш такъв елемент с поределен индекс и го сетва 

*/

Варинат 2:
Код:
/*
фунцията работи по следния начин търси за подаден индекс 
в двата масива ако няма върща това което е дадено по подрабиране на втория аргумент.
Може да се подобри метода като се ипозлва get_magic_quotes()
*/
function __postvar($index, $def = "" ) {
    if (isset($_POST[$index])) 
         $_tmp_var = $_POST[$index];
    else if (isset($_GET[$index]))
         $_tmp_var = $_GET[$index];
    else 
         $_tmp_var = $def;
   return $_tmp_var;
}

Това е само код да си оправиш грешката но трябва и да си редактираш логиката, защото подхода ти е много лош!!!
 
Абе, много мислите, ама нито едно вярно не сте измислили.
Тогава като дълбоки мислители, ми кажете защо навсякъде, дори и като напиша
$a = htmlspecialchars($_POST['username']); пак е така?

(п.с. с линукс съм, ако това ще помогне..)

@FiReFlex пича си знае как да си пише кода.
 
Karcho каза:
Абе, много мислите, ама нито едно вярно не сте измислили.
Тогава като дълбоки мислители, ми кажете защо навсякъде, дори и като напиша
$a = htmlspecialchars($_POST['username']); пак е така?
==========
РАБЕРЕТЕ ПРОБЛЕМА НЕ Е В МОЯ КОД, НА ДРУГИ ХОСТОВЕ СИ БАЧКА.
==========
(п.с. с линукс съм, ако това ще помогне..)

@FiReFlex пича си знае как да си пише кода.
 
Написъл съм ти как да си оправиш проблема, като редактираш php.ini.
Написал съм ти и защо по принцип трябва да се използва isset().
 
Защото ползваш променливи, които ще се създават тепърва, тоест след натискането на събмита.
Затова се ползва
if (isset($_POST['submit'])) {
$a = htmlspecialchars($_POST['username']);
}
 

Back
Горе