Avatar billede tanzaweb Nybegynder
11. marts 2005 - 18:18 Der er 22 kommentarer og
1 løsning

Undefined Index Hvad betyder

Er der nogen der ved hvad dette betyder, og havd problemmet er? jeg bruger det samme script på en anden side uden problem. Kan det være noget med globals eller.

Notice: Undefined index: user in d:\web\nettel.dk\nettel.dk\netAdmin\auth.php on line 5

Her er linje 4 og 5:

session_start();
if (!$_SESSION['user'] || !$_SESSION['pass']) {
Avatar billede bromer Nybegynder
11. marts 2005 - 18:19 #1
Idet $_SESSION er et array betyder det af der ikke er noget index i arrayet der hedder user. Altså at $_SESSION['user'] ikke findes
Avatar billede detox Nybegynder
11. marts 2005 - 18:23 #2
Grunden til det virker på den anden side er sikkert at error_reporting niveauet er sat lavere der. Du kan undgå fejlmeddelelsen ved at tjekke med isset() istedet:

if (!isset($_SESSION['user']) || !isset($_SESSION['pass'])) {
Avatar billede bromer Nybegynder
11. marts 2005 - 18:34 #3
Eller du kan ændre på niveauet i error_reporting [1]. Normalt sætter jeg error_reporting  til 0 (alle warnings etc bliver vist) når jeg arbejder på i et testmiljø. Når jeg går live med noget sætter jeg den normalt til 16 eller deromkring.

[1] http://dk2.php.net/error_reporting
Avatar billede coderdk Praktikant
11. marts 2005 - 18:43 #4
I stedet for isset, plejer jeg at anbefale empty() da den ud over at checke om indexet findes, også checker om den er tom :)

session_start();
if ( empty( $_SESSION['user'] ) || empty( $_SESSION['pass'] ) ) {
Avatar billede bromer Nybegynder
11. marts 2005 - 18:51 #5
tanzaweb> Under alle omstændigheder er det ikke normalt i programmerssprog at du kan undersøge variabler så let. Det er meget sundt hvis du tænker i typer selvom PHP er et typesvagt sprog. Linien

if (!$_SESSION['user'] || !$_SESSION['pass']) {

kan nedbrydes rimelig simpelt. If forventer en sandhedsværdi. Denne sandhedsværdi er i dette tilfælde opbygget som "a || b", hvilket vil sige at a og b bør være sandhedsværdier. Idet ! egentlig er en funktion der tager en sandhedsværdi og retunerer den modsatte sandhedsværdi bør $_SESSION['user'] og $_SESSION['pass'] også være sandhedsværdier. Det er netop her din kode fejler idet det er strenge. Derfor giver det mening at køre den igennem en funktion der undersøger længden af strengen og retunerer en sandhedsværdi alt efter om længden er 0 eller ej. Det er jo netop det empty() og isset() gør.
Avatar billede coderdk Praktikant
11. marts 2005 - 18:54 #6
bromer, Forkert. Han får fejlen fordi array'et $_SESSION ikke indeholder nøglen 'user' eller 'pass' - Det har intet at gøre med typer ;) isset checker om en variabel *findes* - empty checker om den findes OG om den er null/0/tom.
Avatar billede sukos Juniormester
11. marts 2005 - 18:55 #7
isset($_POST["user"]) er sand hvis der findes et felt som hedder user, og længden er så nul, hvis der ikke er skrevet noget?
Avatar billede bromer Nybegynder
11. marts 2005 - 19:02 #8
coderdk> Det er rigtigt, jeg så lige forkert. Men det har bestemt noget med typer af gøre, ídet hvis man tænkte i type-stærke sprog ville man vide at man ikke kunne lave en ! foran et array-element.. hvorefter man ville lede efter en funktion der kunne undersøge hvorvidt nøglen fantes.

Og jeg er klar på forskellen mellem empty og isset :)
Avatar billede sukos Juniormester
11. marts 2005 - 19:05 #9
og forresten, tom, if(!empty(trim($var))
et eller flere "tastatur_trykluft" er ikke empty()
Avatar billede sukos Juniormester
11. marts 2005 - 19:08 #10
Nåh, og så lige en parentes! I mangel.

og tanzaweb, lav selv kode som du får råd om her!
det kan altid betale sig i længden!
Avatar billede tanzaweb Nybegynder
12. marts 2005 - 04:56 #11
Tak for hjælpen det hjalp, men nu siger den det samme om denne linje: $_POST['user'] = addslashes($_POST['user']);
Notice: Undefined index: user in \netAdmin\login.php on line 6
og denne password='$_POST[pass]

Og jeg har prøvet at ændre den på flere måder bl.a. med : !isset($_POST['user']) = addslashes($_POST['user']); og andre men lige lidt hjælper det.

Men for det ovenstående svar var det detox som kom med det første svar som virkede
Avatar billede detox Nybegynder
12. marts 2005 - 11:22 #12
Normalt vil du lave en if betingelse der tjekker om der er postet nogle variabler i den her stil:

if (isset($_POST['user'])) { //eller et andet felt; 'submit' eller fx et hidden felt
  //Her kan du så undersøge om de postede variabler indeholder noget og evt. skal tilføjes addslashes
}

Men pas på med at bruge addslashes(), da der i mange tilfælde køres med: magic_quotes_gpc. Derfor bør du gøre det i den her stil:

$_POST['user'] = get_magic_quotes_gpc() ? $_POST['user'] : addslashes($_POST['user']);
Avatar billede detox Nybegynder
12. marts 2005 - 11:25 #13
Og er det mange variabler der skal have addslashes, bruger du selvfølgelig:

if (!get_magic_quotes_gpc()) {
  // sæt addslashes her
}
Avatar billede tanzaweb Nybegynder
12. marts 2005 - 12:16 #14
Jeg har lige et spørgsmål mere. Alt dette er fordi at error_reporting er sat til 0, af webhotel udbyderen?
da, den ikke gør alt dette på min gamle server.
Avatar billede detox Nybegynder
12. marts 2005 - 12:24 #15
Ja, det er korrekt ;O)
Avatar billede tanzaweb Nybegynder
12. marts 2005 - 12:29 #16
hvor kan jeg læse mere om at løse dette for det tyder på at jeg skal have omdefineret hele siden ad den kommer op med dette for hver eneste variable, array, og ikke bare ved sessions. og jeg er egentlig lidt træt af det da jeg troede jeg var ved at have noget jeg var ved at lære
Avatar billede detox Nybegynder
12. marts 2005 - 12:58 #17
Du kan læse om error reporting her:
http://dk2.php.net/manual/en/function.error-reporting.php

Du kan vælge at omstrukturere dine sider (anbefales), men hvis det er et alt for stort arbejde kan du forsøge at sænke error reporting level ved at sætte:

error_reporting(E_ALL ^ E_NOTICE); // øverst på dine sider.
Avatar billede tanzaweb Nybegynder
30. marts 2005 - 21:39 #18
Har ikke fået løst problemmet endnu da den sender en videre uden password, men ikke uden det rigtige brugernavn
Avatar billede detox Nybegynder
30. marts 2005 - 22:14 #19
Så må vi jo prøve at se på det, hvis du poster lidt.
Avatar billede tanzaweb Nybegynder
05. april 2005 - 12:13 #20
Hvor henne ligger error_reporting niveauet i php.ini filen jeg kan finde flere error_reporting men ikke lige med dette setup
Avatar billede detox Nybegynder
05. april 2005 - 18:48 #21
Jeg ved altså ikke helt hvad du mener.
Avatar billede tanzaweb Nybegynder
05. april 2005 - 18:55 #22
Der er noget med at i php.ini filen kan man indstille error_reporting niveauet hvordan den skal vise fejl der opstår
Avatar billede detox Nybegynder
06. april 2005 - 02:31 #23
I php.ini ser den sådan ud:

error_reporting = E_ALL & ~E_NOTICE
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester