Avatar billede hyha Nybegynder
29. juli 2004 - 18:47 Der er 6 kommentarer og
1 løsning

At fjerne NOTICE: Undefined variable/index

Nogen der kan hjælpe mig med at finde ud af hvordan jeg fjerner fejl meddelelserne der giver:

Notice: Undefined variable: action in d:\server\root\sessions\test.php on line 19

Notice: Undefined variable: action in d:\server\root\sessions\test.php on line 24

Notice: Undefined index: username in d:\server\root\sessions\test.php on line 38

Jeg har siddet og rodet med problemmet i lang tid, og er ret ny i PHP programmeringen.

Kloge folk siger jeg kan fjerne problemmet ved at sætte register_globals = ON, men endnu klogere folk siger sikkerhed og at denne bør stå til OFF.

Jeg kan ikke finde ud af hvordan jeg får erklæret disse variabler. Det ville være rart hvis nogen ville kigge lidt på min kode, og tilføje hvad jeg mangler.

Jeg har forleden læst artiklen omkring problemmet med at konvertere fra register_global = ON til =OFF.

Koden jeg baserer min fejlkoder på:
****************************************************************
<? session_start(); ?>
<html>
<head></head>
<body>



<?

mysql_connect ("host","bruger","kode");
mysql_select_db ("db");


// logout
if($action == "logout"){
    SESSION_UNREGISTER('username');
    SESSION_UNREGISTER('password');
}
// logon
if($action == "logon"){
    if ($username && $password){
        $_SESSION['username'] = $username;
        $_SESSION['password'] = md5($password);
    } else {
        print('Du har glemt at skrive et brugernavn eller koden');
    }
}




if($_SESSION['username']){
    print('Velkommen '.$_SESSION['username'].'');
    print('<br><br>');
    print('<a href="'.$_SERVER['PHP_SELF'].'?action=logout">log af</a>');               
    print('<br><br>');
} else {
?>
    <form name="Login" method="POST" action="<?=$_SERVER['PHP_SELF']?>?action=logon">
        Brugernavn: <input type="text" name="username"><br>
        Password:  <input type="password" name="password"><br>
        <input type="submit" name="submit" value="Login">
    </form>

<? } ?>


<pre>
    <?php print_r($_SESSION); ?>
</pre>

</body>
</html>
****************************************************************
Avatar billede detox Nybegynder
29. juli 2004 - 18:56 #1
Du kan bruge isset() til at tjekke om en variabel er sat og så brug de globale variabler: $_GET, $_POST og $_SESSION:

<? session_start(); ?>
<html>
<head></head>
<body>



<?

mysql_connect ("host","bruger","kode");
mysql_select_db ("db");


// logout
if (isset ($_GET['action']) && $_GET['action'] == "logout"){
    SESSION_UNREGISTER('username');
    SESSION_UNREGISTER('password');
}
// logon
if (isset ($_GET['action']) && $_GET['action'] == "logon"){
    if (isset($_POST['username']) && isset($_POST['password'])){
        $_SESSION['username'] = $_POST['username'];
        $_SESSION['password'] = md5($_POST['password']);
    } else {
        print('Du har glemt at skrive et brugernavn eller koden');
    }
}




if(isset($_SESSION['username'])){
    print('Velkommen '.$_SESSION['username'].'');
    print('<br><br>');
    print('<a href="'.$_SERVER['PHP_SELF'].'?action=logout">log af</a>');               
    print('<br><br>');
} else {
?>
    <form name="Login" method="POST" action="<?=$_SERVER['PHP_SELF']?>?action=logon">
        Brugernavn: <input type="text" name="username"><br>
        Password:  <input type="password" name="password"><br>
        <input type="submit" name="submit" value="Login">
    </form>

<? } ?>


<pre>
    <?php print_r($_SESSION); ?>
</pre>

</body>
</html>
Avatar billede detox Nybegynder
29. juli 2004 - 18:58 #2
I øvrigt ser det ud til at: register_globals = ON, så måske skulle du prøve at tjekke det ud og evt. sætte den OFF.
Avatar billede avminarm Juniormester
29. juli 2004 - 19:12 #3
eller den nemme løsning at rette i php.ini retlinien 'error_reporting' til:

error_reporting  =  E_ALL & ~E_NOTICE
Avatar billede detox Nybegynder
29. juli 2004 - 19:15 #4
avminarm -> den dovne mands løsning ;o)
Avatar billede avminarm Juniormester
29. juli 2004 - 19:18 #5
nemlig ;o) - ligesom register_globals = ON ;o) - dermed ikke sagt det er det smarteste!
Avatar billede hyha Nybegynder
29. juli 2004 - 20:11 #6
Totalt lækkert, og tak for hjælpen.
Avatar billede avminarm Juniormester
29. juli 2004 - 21:20 #7
smider lige et svar ;o)
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