Avatar billede keet Nybegynder
28. maj 2003 - 10:18 Der er 18 kommentarer og
1 løsning

variabel problem

Jeg arbejder midlertidig med PHP i winXP, men der opstår nogle problemer for mig, som jeg ikke har under Apache/Linux.
Notice: Undefined variable: mode in ......

Kan jeg få PHP til at ignorere dette?
Avatar billede sostack Nybegynder
28. maj 2003 - 10:24 #1
kode?

//sostack
Avatar billede keet Nybegynder
28. maj 2003 - 10:26 #2
//redirects user if not loged on
if ( isset($user) == false && $mode != "logon.form" ) {
  header("location:index.php?mode=logon.form");
}

Har ikke nogen problemer med det på min Linux-maskine.
Avatar billede exp Juniormester
28. maj 2003 - 10:27 #3
bliver $mode sat til nogen værdi?
Avatar billede keet Nybegynder
28. maj 2003 - 10:30 #4
værdien kommer fra en query_string, som du kan se: index.php?mode=logon.form
Avatar billede sostack Nybegynder
28. maj 2003 - 10:30 #5
prøv:
//redirects user if not loged on
if (isset($_POST['user']) == false && $_POST['mode'] != "logon.form" ) {
  header("location:index.php?mode=logon.form");
}
eller:
//redirects user if not loged on
if (isset($_GET['user']) == false && $_GET['mode'] != "logon.form" ) {
  header("location:index.php?mode=logon.form");
}

//sostack
Avatar billede sostack Nybegynder
28. maj 2003 - 10:32 #6
globals = off i php.ini på din XP som default efter php4.2

//sostack
Avatar billede keet Nybegynder
28. maj 2003 - 10:33 #7
er det det samme som register_globals = Off?
Avatar billede sostack Nybegynder
28. maj 2003 - 10:34 #8
Ja

//sostack
Avatar billede keet Nybegynder
28. maj 2003 - 10:37 #9
så er den Off
Avatar billede keet Nybegynder
28. maj 2003 - 10:45 #10
Hmm nå brokker den sig ikke over undefined variable... men Undefined offset: 1 in ...
kode:
$arr_mode = split('[.]', $mode);
switch ($arr_mode[1]) {
..
}
Avatar billede sostack Nybegynder
28. maj 2003 - 10:45 #11
Så skal man bruge enten $_POST['var'] eller $_GET['var'] for at overføre $var mellem forskellige scripts.

//sostack
Avatar billede sostack Nybegynder
28. maj 2003 - 10:47 #12
$arr_mode = split('[.]', $_GET['mode']); // eller $_POST['mode']
switch ($arr_mode[1]) {
..
}

//sostack
Avatar billede keet Nybegynder
28. maj 2003 - 10:48 #13
Jeg tror fejlen opstår hvis fx mode=test, så er [1] selvfølgelig Null. Kan man få PHP til at ignorere det?
Avatar billede sostack Nybegynder
28. maj 2003 - 10:48 #14
Hvis du bruger $mode mange gange i dine scripts, så sæt $mode = $_GET['mode'] // eller $_POST['mode']

//sostack
Avatar billede keet Nybegynder
28. maj 2003 - 10:50 #15
okay, hvad hjælper det?
Avatar billede sostack Nybegynder
28. maj 2003 - 10:52 #16
Hvis du sætter $mode = $_GET['mode'] // eller $_POST['mode']
i begyndelsen af dit script, behøver du ikke rette alle de andre steder du bruger $mode.

//sostack
Avatar billede keet Nybegynder
28. maj 2003 - 10:55 #17
okay. Men hvad er forskellige på at bare bruge $mode og så $var = $_GET('mode')?
Avatar billede sostack Nybegynder
28. maj 2003 - 11:02 #18
Hvis register_globals = off, forbliver variable($mode) lokale, d.v.s. kan kun bruges i det script hvor de er defineret. $_GET['mode'] derimod bliver overført til det kaldte script, så så $mode = $_GET['mode']; definerer din $mode i det næste script. Man sætter kun $mode = $_GET['mode']; fordi det er kortere at skrive flere gange.
register_globals = off er en sikkerhedsforanstaltning i PHP.

//sostack
Avatar billede keet Nybegynder
28. maj 2003 - 11:03 #19
ok, tak for hjælpen
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