Avatar billede jenslund Juniormester
13. juli 2008 - 17:13 Der er 9 kommentarer og
1 løsning

Problem med isset

Hej

Det er et stykke tid siden, jeg sidst har roddet med PHP.
Jeg har et gammelt script, der tidligere har virket.
Men der er tilsyneladene sket noget med PHP, siden sidst jeg har nørdet med det.

Here we goes:

I en indputformen står:

<INPUT TYPE=\"hidden\" NAME=\"bruger\" VALUE=\"$this->id\">

Så 'bruger' er defineret - uanset hvad $this->id måtte være

Problemet opstår i følgende funktionskald:

# Sæt ind:
if (isset($bruger) && empty($bruger)){
  $usr->insert();
}

Den vil ikke køre funtionen - kun hvis jeg fjerner en bid så den ser sådan ud i stedet:

# Sæt ind:
if (empty($bruger)){
  $usr->insert();
}

Der kører den fint, men jeg forstå ikke, at den første giver problemer - er der noget omkring nyere versioner af PHP jeg skal være opmærksom på?

Venlig hilsen
Jens
Avatar billede riversen Nybegynder
13. juli 2008 - 17:21 #1
i de nye versioner er registerglobals sat til off. Det betyder du skal bruge $_GET og $_POST ... i dit eksempel isset( $_POST['bruger'] ) ...
Avatar billede jenslund Juniormester
13. juli 2008 - 17:36 #2
Ok - kommer vist til at bede om at få det skåret ud i pap. Hvordan ville den konkret se ud i mit ex?

Vil det sige der er et generelt problem med globals.

Har nemlig problem med at kalde en underfuntion med en række globals:

  function readcgi(){
    global $bruger_id;
    global $bruger_brugernavn;
    $this->id = $bruger_id;
    $this->username = $bruger_id;
}
Avatar billede jenslund Juniormester
13. juli 2008 - 17:38 #3
Har hævet point lidt - hjælp ville blive påskønnet
Avatar billede jenslund Juniormester
13. juli 2008 - 17:45 #4
Ah - nu nærlæste jeg det du skrev (jazzfestivallen tog lidt hårdt på mig i går) - det virker :-)
Avatar billede gl_nok Nybegynder
13. juli 2008 - 17:53 #5
hmm du har ret. Jeg har ellers selv en mulighed for at ændre på php.ini gennem en formular og det virker på mine andre domæner men ikke på det her :-(
Problemet er at det også indvirker på alle mine dynamiske sider hvor jeg sender data med index.php?sprogs=engelsk som eksempel.
Kan man ændre på register globals udenom php.ini ?
Avatar billede jenslund Juniormester
13. juli 2008 - 18:01 #6
He he - lavede:

function readcgi(){
    global $bruger_id;
    global $bruger_brugernavn;
    $this->id = $bruger_id;
    $this->username = $bruger_id;
}

Om til:

function readcgi(){
    global $bruger_id;
    global $bruger_brugernavn;
    $this->id = $_POST[bruger_id];
    $this->username = $_POST[bruger_id];
}

Og det virker - dybest set er det vel ikke længere nødvendigt at definere globals i toppen af funktionen??

riversen - smid et svar - point på vej
Avatar billede riversen Nybegynder
13. juli 2008 - 18:05 #7
behold dem bare...
det er sikkerhedsmæssigt god stil at bruger registerglobals i off tilstand, da du ellers skal sætte samtlige variabler inden du bruger dem, da en website-bruger ellers vil kunne manipulere med dem uden videre.
Avatar billede gl_nok Nybegynder
13. juli 2008 - 18:21 #8
hvo min tekst herinde relaterer sig til det spørgsmål jeg har oprettet om cookies , :-)
Avatar billede jenslund Juniormester
13. juli 2008 - 18:25 #9
Ok - takker :-) det var en stor hjælp
Avatar billede jenslund Juniormester
13. juli 2008 - 19:02 #10
lukker
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