Avatar billede dj-sejler Praktikant
18. december 2004 - 22:11 Der er 15 kommentarer og
1 løsning

Hvad er da galt med mit loginscript?

hej kloge mennesker...

Jeg har et login scrip... men det virker ikke som jeg tænkte det skulle:

..:: scriptet ::..

<?php
if ($_POST("submit") != '') {
  $username = $_POST("brugernavn");
  $password = $_POST("adgangskode");
  if ($username == '' && $password == '' ){ $fejl = 1; }
  elseif ($username == "" ) { $fejl = 2; }
  elseif ($password == "" ) { $fejl = 3; }
  else {
    if ($username == "bruger" && $password == "adgang"){
      Header("Location: ?mode=add");
    }
    else { $fejl = 4; }
  }

} else { ?>
<div id="gallerier"><h1>Admin</h1>
    <?php
    if (fejl == 1){ print("<p></p>"); }
    elseif (fejl == 2){ print("<p>Du har ikke adgang til denne side!</p>"); }
    else { print("<p>&nbsp;</p>"); }
    ?>
    <p>For at kunne adminstrere denne hjemmeside skal du først logge ind!</p>
    <form action="?mode=admin" method="post">
    <p>Brugernavn: <br /><input type="text" size="30" name="brugernavn" /></p>
    <p>Adgangskode: <br /><input type="password" size="30" name="adgangskode" /></p>
    <p><input type="submit" value="  Login  " name="login"></p>
    </form>
</div>

<?php } ?>
Avatar billede morteeart Nybegynder
18. december 2004 - 22:17 #1
og hvad får du af fejl ?
eller hvad er der galt ?
Avatar billede dj-sejler Praktikant
18. december 2004 - 22:19 #2
nåe ja...

jamen jeg får fejl i 2. linie: if ($_POST("submit") != '') {
Fatal error: Function name must be a string in

og siden vises overhovedet ikke...
Avatar billede coderdk Praktikant
18. december 2004 - 22:31 #3
$_POST['submit'] ikke parenteser ;)
Avatar billede coderdk Praktikant
18. december 2004 - 22:31 #4
Og et svar ;)
Avatar billede dj-sejler Praktikant
18. december 2004 - 22:34 #5
hmm... nu viser den siden... men den gør ikke noget inde i funktionen!
Avatar billede coderdk Praktikant
18. december 2004 - 22:42 #6
Har du husket at ændre:  $_POST("brugernavn") og $_POST("adgangskode") også?
Desuden har du jo kaldt submitknappen for login, og ikke submit ;) Så ændr $_POST['submit'] til $_POST['login']
Avatar billede dj-sejler Praktikant
18. december 2004 - 23:01 #7
hmm... ja nu er det kommet lidt længere :)
men når jeg bare skriver et eller andet så viser den ikke noget (mente den skulle vise fejlteksterne) men når jeg skriver de rigtige ord får jeg følgende fejl :Warning: Cannot modify header information - headers already sent by osv...
linie 10: Header("Location: ?mode=add");

..:: scriptet igen ::..
<?php
if ($_POST['login'] != '') {
  $username = $_POST['brugernavn'];
  $password = $_POST['adgangskode'];
  if ($username == '' && $password == '' ){ $fejl = 1; }
  elseif ($username == "" ) { $fejl = 2; }
  elseif ($password == "" ) { $fejl = 3; }
  else {
    if ($username == "bruger" && $password == "adgang"){
      Header("Location: ?mode=add");
    }
    else { $fejl = 4; }
  }

} else { ?>
<div id="gallerier"><h1>Admin</h1>
    <?php
    if (fejl == 1){ print("<p></p>"); }
    elseif (fejl == 2){ print("<p>Du har ikke adgang til denne side!</p>"); }
    else { print("<p>&nbsp;</p>"); }
    ?>
    <p>For at kunne adminstrere denne hjemmeside skal du først logge ind!</p>
    <form action="?mode=admin" method="post">
    <p>Brugernavn: <br /><input type="text" size="30" name="brugernavn" /></p>
    <p>Adgangskode: <br /><input type="password" size="30" name="adgangskode" /></p>
    <p><input type="submit" value="  Login  " name="login"></p>
    </form>
</div>

<?php } ?>
Avatar billede coderdk Praktikant
18. december 2004 - 23:02 #8
Det er fordi du udskriver noget før din header() - Gør du det? Et enkelt mellemrum er nok til at få den i dammen ;)
Avatar billede coderdk Praktikant
18. december 2004 - 23:03 #9
Den vil heller aldrig vise fejlene, da du har den i en else...
Ændr til:

<?php
if ($_POST['login'] != '') {
  $username = $_POST['brugernavn'];
  $password = $_POST['adgangskode'];
  if ($username == '' && $password == '' ){ $fejl = 1; }
  elseif ($username == "" ) { $fejl = 2; }
  elseif ($password == "" ) { $fejl = 3; }
  else {
    if ($username == "bruger" && $password == "adgang"){
      Header("Location: ?mode=add");
      exit;
    }
    else { $fejl = 4; }
  }
?>
<div id="gallerier"><h1>Admin</h1>
    <?php
    if (fejl == 1){ print("<p></p>"); }
    elseif (fejl == 2){ print("<p>Du har ikke adgang til denne side!</p>"); }
    else { print("<p>&nbsp;</p>"); }
    ?>
    <p>For at kunne adminstrere denne hjemmeside skal du først logge ind!</p>
    <form action="?mode=admin" method="post">
    <p>Brugernavn: <br /><input type="text" size="30" name="brugernavn" /></p>
    <p>Adgangskode: <br /><input type="password" size="30" name="adgangskode" /></p>
    <p><input type="submit" value="  Login  " name="login"></p>
    </form>
</div>
Avatar billede dj-sejler Praktikant
18. december 2004 - 23:04 #10
fatter intet 8|
jeg er ikke med på hvor det mellem skal være...
hele sciptet er include i min index
Avatar billede coderdk Praktikant
18. december 2004 - 23:08 #11
Ok, du kan ikke bruge header() hvis du skriver noget ud før den... Så får du den fejl du har nu.
Det KAN dog lade sig gøre, men så skal du kalde ob_start() i starten af dit script, læs om det på php.net:

http://dk2.php.net/ob_start
http://dk2.php.net/ob_clean
http://dk2.php.net/ob_end_clean
http://dk2.php.net/ob_end_flush
Avatar billede dj-sejler Praktikant
18. december 2004 - 23:26 #12
nederen... forstår det ikke... :(
Avatar billede dj-sejler Praktikant
18. december 2004 - 23:44 #13
jeg ved slet ikke hvad jeg gør...
er det noget i denne stil? eller er jeg helt væk?

<?php

function callback()
{
  // replace all the apples with oranges
  return (?mode=add);
}

ob_start("callback");

?>
Avatar billede dj-sejler Praktikant
18. december 2004 - 23:49 #14
Derudover... skulle den så ikke vise fejlene alligevel? når man taster forkert?
Avatar billede coderdk Praktikant
19. december 2004 - 01:07 #15
Nej, nej, bare skriv ob_start() i starten af det første script - Se om det så ikke virker der, ellers tilføk ob_end_clean() før din header()

Den ville ikke vise fejlene før, da de var inde i en if, og du skrev fejlen ud i if'ens else ;)
Avatar billede dj-sejler Praktikant
19. december 2004 - 13:08 #16
jamen nu ser det sku ud til at virke...
og jeg har også løst problemet med redirect...
så 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