Avatar billede lsp75 Nybegynder
09. juli 2006 - 18:28 Der er 68 kommentarer

Problemer med login vha PHP og mySQL

Hej ekspert!

Nu har jeg siddet og bakset med en login-procedure i jeg ved ikke hvor lang tid og er ved at få grå hår i hovedet af det.

Jeg er begynder inden for PHP-verdenen og skriver derfor PHP-scriptet mere eller mindre af fra en bog, der hedder "PHP and MySQL for Dynamic Web Sites". Det skulle i og for sig være let nok, troede jeg, men jeg kan ikke få det til at virke :-(

Jeg arbejder med tre filer, der pt. kaldes:

1) login.php
2) loggedin.php
3) index2.php

Forud for dette har jeg oprettet en database med en tabel (vha. PHP myAdmin), der hedder "users". Her ligger indtil videre tre test-brugere.



Når jeg indtaster bruger-data på login-siden kan jeg godt få scriptet til at validere indholdet, men så stopper festen. Jeg kan ikke logge mig ind!!

Jeg arbejder med cookies for at kunne brugerne.

Nedenfor kan du se min kode (hele sider). Kan du se, hvad der er galt? Du kan evt. teste scriptne her: http://www.blaagaardsgade25-27.dk/testmappe/login.php. Brug følgende data: Brugernavn = hest123, Password = hest123 (brugeren er oprettet i databasen).

På forhånd tak for hjælpen!
/lsp


1) login.php-siden

<?php # login.php

if (isset($_POST['submit'])) { // handle the form

    require_once ('mysql_connect.php');
   
    // create a function for escaping the data
    function escape_data ($data) {
        global $dbc;
        if (ini_get('magic_quotes_gpc')) {
            $data = stripslashes($data);
        }
        return mysql_real_escape_string($data, $dbc);
    } // end of function
   
    $message = NULL; //create an empty new variable
   
    // check for a username
    if (empty($_POST['username'])) {
        $u = FALSE;
        $message .= '<br>Du har glemt at indtaste et brugernavn!';
    } else {
        $u = escape_data($_POST['username']);
    }
   
    // check for a password
    if (empty($_POST['password'])) {
        $p = FALSE;
        $message .= '<br>Du har glemt at indtaste et password!';
    } else {
        $p = escape_data($_POST['password']);
    }
   
    if ($u && $p) { // if everything's OK

        // retrieve the user_id and first_name for that username/password combination
        $query = "SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')";       
        $result = @mysql_query ($query); // run the query
        $row = mysql_fetch_array ($result, MYSQL_NUM); // return a record, if applicable

        if ($row) { // a record was pulled from the database
               
                // Set the cookies & redirect
                setcookie ('first_name', $row[1]);
                setcookie ('user_id', $row[0]);
                header ("Location:  http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/loggedin.php");
                exit(); // quit the script
               
        } else { // no record matched the query
            $message = '<br>Det indtastede brugernavn og password findes ikke!';
        }
       
        mysql_close(); // close the database connection

    } else {
        $message .= '<br>Prøv igen.';       
    }
} // end of the main submit conditional

// set the page title and include the HTML header
$page_title = 'Login';
include ('header.inc');

// print the error message if there is one
if (isset($message)) {
    echo '<font color="red">', $message, '</font>';
}
?>


<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <p class="hovedoverskrift">Log in</p>
  <p>Er du andelshaver eller lejer kan du få adgang til de lukkede sider.</p>
  <p>Har du ikke modtaget et brugernavn og et password, skal du kontakte vores webmaster. Dette gælder også, hvis du har glemt de pågældende oplysninger.</p>
  <p><strong>Indtast brugernavn og password</strong></p>
  <table width="250"  border="0" cellspacing="0" cellpadding="4">
    <tr>
      <td>Brugernavn:</td>
      <td><input type="text" name="username" size="20" maxlength="20" value="<?php if (isset($_POST['username'])) echo $_POST['username']; ?>" /></td>
    </tr>
    <tr>
      <td>Password:</td>
      <td><input type="password" name="password" size="20" maxlength="20" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td></td>
    </tr>
        <tr>
          <td>&nbsp;</td>
      <td><input type="submit" name="submit" value="Log in" /></td>
    </tr>
  </table>
</form><!-- end of form -->
<?php
include ('footer.inc'); // include the HTML footer
?>

2) loggedin.php-siden


<?php # loggedin.php

// if no cookie is present, redirect the user
if (!isset($_COOKIE['first_name'])) {
    header ("Location:  http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/index2.php");
    exit(); // quit the script
}

// set the page title and include the HTML header
$page_title = 'logged in';
include ('header.inc');

// print a customized message
echo "<p>Du er logget ind som, {$_COOKIE['first_name']}!</p>";

include ('footer.inc'); // include the HTML footer
?>


3) index2.php-siden

<?php # index2.php
$page_title = 'Velkommen!';
include ('header.inc'); // use the HTML header file

echo '<p>Du er logget ind på siden...</p>';

include ('footer.inc'); // use the HTML footer file
?>
Avatar billede lsp75 Nybegynder
09. juli 2006 - 18:29 #1
rettelse: jeg arbejder med cookies for at kunne HUSKE brugerne
Avatar billede iss Novice
09. juli 2006 - 18:32 #2
Og når du kigger i databasen så står der en bunke underlige tegn i password?
Avatar billede leif Seniormester
09. juli 2006 - 18:36 #3
Du har husket at når du har oprettet brugeren i databasen, at hvis det er gjort via phpmyadmin at der i funktion har været valgt PASSWORD i password feltet
Avatar billede lsp75 Nybegynder
09. juli 2006 - 18:57 #4
Da jeg oprettede tabellen i databasen skrev jeg følgende (forkortet):

CREATE TABLE users (
user_id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
first_name VARCHAR(15) NOT NULL,
last_name VARCHAR(30) NOT NULL,
password CHAR(16) NOT NULL,
PRIMARY KEY (user_id)
);

Derefter oprettede jeg tre brugere og kunne derefter se, som iss nævner det, at de indtastede passwords var blevet "oversat" til en lang tal/bogstavrække (kryptering!). Ja, jeg vælger PASSWORD, som leif spørger.
Avatar billede lsp75 Nybegynder
09. juli 2006 - 18:58 #5
hov, det var ikke en forkortet udgave - jeg har skrevet det hele
Avatar billede iss Novice
09. juli 2006 - 19:03 #6
16 har er for lidt... mener det er 42...
Avatar billede lsp75 Nybegynder
09. juli 2006 - 19:04 #7
ha, det var dog utroligt, jeg glemt denne linie da jeg skrev ovenstående:
...
username VARCHAR(15) NOT NULL,
...
Avatar billede iss Novice
09. juli 2006 - 19:08 #8
Har du rettet dit password felt til det bliver langt nok?
Avatar billede lsp75 Nybegynder
09. juli 2006 - 19:26 #9
Ja, jeg har endda prøvet at slette tabellen og oprette den på ny. Det har ikke hjulpet!

Jeg skrev "...password CHAR(42) NOT NULL,..."
I tabellen kan jeg se, at der nu står "...password VARCHAR(42)..."!! Den er selv skiftet fra CHAR til VARCHAR, men jeg ved ikke, om det har nogen betydning?
Avatar billede iss Novice
09. juli 2006 - 19:39 #10
Nu skal du ikke tage mit ord for gode vare, sæt den til varchar 255 så kan du lave den kortere senere (eller lade være, som efter i nok ikke er 100.000.000 andelshavere)...
Avatar billede lsp75 Nybegynder
09. juli 2006 - 19:43 #11
Det hjælper ikke noget ude på sitet!?
Avatar billede iss Novice
09. juli 2006 - 19:45 #12
Du husker at slette og oprette den bruger igen, ikke?
Avatar billede lsp75 Nybegynder
09. juli 2006 - 19:46 #13
Jeg har oprettet en helt ny bruger og prøvet med den. Det virkede ikke :-(
Avatar billede lsp75 Nybegynder
09. juli 2006 - 19:48 #14
Når jeg laver en ny bruger vælger jeg PASSWORD i function (ud for password), men jeg vælger ikke nogen function ud fra de andre elementer (username, first_name og last_name). Skal jeg det? Det synes jeg ikke at min bog siger noget om.
Avatar billede iss Novice
09. juli 2006 - 19:49 #15
Og du huskede at oprette den med PASSWORD()?

Prøv evt at lave en echo "***".$query."***"; efter $query = "SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')";     
Det den udskriver smider du så i phpMyAdmin, og ser om det giver hvad du skal have, hvis ikke, så har du lavet en fejl i oprettelsen.
Avatar billede lsp75 Nybegynder
09. juli 2006 - 19:57 #16
Ja, jeg huskede at oprette den med PASSWORD().

Jeg har sat din sætning ind sådan her:

if ($u && $p) { // if everything's OK

        // retrieve the user_id and first_name for that username/password combination
        $query = "SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')";
        echo "***".$query."***";
        $result = @mysql_query ($query); // run the query
        $row = mysql_fetch_array ($result, MYSQL_NUM); // return a record, if applicable
       
        if ($row) { // a record was pulled from the database
               
                // Set the cookies & redirect
                setcookie ('first_name', $row[1]);
                setcookie ('user_id', $row[0]);
                header ("Location:  http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/loggedin.php");
                exit(); // quit the script
               
        } else { // no record matched the query
            $message = '<br>Det indtastede brugernavn og password findes ikke!';
        }
       
        mysql_close(); // close the database connection

    } else {
        $message .= '<br>Prøv igen.';       
    }


Men der sker stadig ikke noget ude på sitet!? Der står stadig "Prøv igen". Kan det være PHP'en, der er noget galt med?
Avatar billede lsp75 Nybegynder
09. juli 2006 - 20:08 #17
kære iss, hvis det ikke er til at spotte fejlen, kender du så evt. til et PHP-login-script, som jeg kan prøve at bruge i stedet?
Avatar billede iss Novice
09. juli 2006 - 20:16 #18
Lav en print_r($_POST); lige efter if (isset($_POST['submit'])) { // handle the form

For det ser ud som om din server ikke smide variabler afsted som den burde.
Avatar billede lsp75 Nybegynder
09. juli 2006 - 20:28 #19
Der står stadig "Prøve igen.", men øverst kommer der nu denne tekst:

Array ( [username] => abdulla [password] => abdulla123 [submit] => Log in )

Hvad siger det?
Avatar billede iss Novice
09. juli 2006 - 20:29 #20
if ($u && $p) virker ikke som den skal så måske du skulle prøve if ($u != false && $p != false) burde betyde det samme...
Avatar billede lsp75 Nybegynder
09. juli 2006 - 20:33 #21
jeg har ændret scriptet til if ($u != false && $p != false), som du skriver, men det er stadig det samme:

Array ( [username] => abdulla [password] => abdulla123 [submit] => Log in )
Avatar billede iss Novice
09. juli 2006 - 20:37 #22
Skriv if (true) istedet...
Avatar billede iss Novice
09. juli 2006 - 20:37 #23
Hvis det virker, så prøv med if (empty($message))
Avatar billede lsp75 Nybegynder
09. juli 2006 - 20:38 #24
Her er det originale script fra http://www.dmcinsights.com/phpmysql/scripts.php (Chapter 7).

Jeg ved ikke, om det er en hjælp, men så ku' du evt. se, hvordan det står i lærebogen:

<?php # Script 7.16 - login.php
if (isset($_POST['submit'])) {
    require_once ('../mysql_connect.php');
    function escape_data ($data) {
        global $dbc;
        if (ini_get('magic_quotes_gpc')) {
            $data = stripslashes($data);
        }
        return mysql_real_escape_string($data, $dbc);
    }
    $message = NULL;
    if (empty($_POST['username'])) {
        $u = FALSE;
        $message .= '<p>You forgot to enter your username!</p>';
    } else {
        $u = escape_data($_POST['username']);
    }
    if (empty($_POST['password'])) {
        $p = FALSE;
        $message .= '<p>You forgot to enter your password!</p>';
    } else {
        $p = escape_data($_POST['password']);
    }
   
    if ($u && $p) { // If everything's OK.
        $query = "SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')";       
        $result = @mysql_query ($query);
        $row = mysql_fetch_array ($result, MYSQL_NUM);
        if ($row) {
               
                // Start the session, register the values & redirect.
                session_name ('YourVisitID');
                ini_set ('session.use_cookies', 0);
                session_start();
                $_SESSION['first_name'] = $row[1];
                $_SESSION['user_id'] = $row[0];
                header ("Location:  http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/loggedin.php?" . SID);
                exit();
               
        } else {
            $message = '<p>The username and password entered do not match those on file.</p>';
        }
        mysql_close();
    } else {
        $message .= '<p>Please try again.</p>';       
    }
}
$page_title = 'Login';
include ('templates/header.inc');
if (isset($message)) {
    echo '<font color="red">', $message, '</font>';
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset><legend>Enter your information in the form below:</legend>
<p><b>User Name:</b> <input type="text" name="username" size="10" maxlength="20" value="<?php if (isset($_POST['username'])) echo $_POST['username']; ?>" /></p>
<p><b>Password:</b> <input type="password" name="password" size="20" maxlength="20" /></p>
<div align="center"><input type="submit" name="submit" value="Login" /></div>
</form><!-- End of Form -->
<?php
include ('templates/footer.inc');
?>
Avatar billede lsp75 Nybegynder
09. juli 2006 - 20:39 #25
Hov, jeg kom til at paste den forkerte - du får lige dette her i stedet (jeg bruger cookies og ikke sessions, som ovenfor) - stadig fra lærebogen:


<?php # Script 7.1 - login.php

if (isset($_POST['submit'])) { // Handle the form.

    require_once ('../mysql_connect.php'); // Connect to the db.
       
    // Create a function for escaping the data.
    function escape_data ($data) {
        global $dbc; // Need the connection.
        if (ini_get('magic_quotes_gpc')) {
            $data = stripslashes($data);
        }
        return mysql_real_escape_string($data, $dbc);
    } // End of function.

    $message = NULL; // Create an empty new variable.
   
    // Check for a username.
    if (empty($_POST['username'])) {
        $u = FALSE;
        $message .= '<p>You forgot to enter your username!</p>';
    } else {
        $u = escape_data($_POST['username']);
    }
   
    // Check for a password.
    if (empty($_POST['password'])) {
        $p = FALSE;
        $message .= '<p>You forgot to enter your password!</p>';
    } else {
        $p = escape_data($_POST['password']);
    }
   
    if ($u && $p) { // If everything's OK.

        // Retrieve the user_id and first_name for that username/password combination.
        $query = "SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')";       
        $result = @mysql_query ($query); // Run the query.
        $row = mysql_fetch_array ($result, MYSQL_NUM); // Return a record, if applicable.

        if ($row) { // A record was pulled from the database.
               
                // Set the cookies & redirect.
                setcookie ('first_name', $row[1]);
                setcookie ('user_id', $row[0]);
                header ("Location:  http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/loggedin.php");
                exit(); // Quit the script.
               
        } else { // No record matched the query.
            $message = '<p>The username and password entered do not match those on file.</p>';
        }
       
        mysql_close(); // Close the database connection.

    } else {
        $message .= '<p>Please try again.</p>';       
    }

} // End of the main Submit conditional.

// Set the page title and include the HTML header.
$page_title = 'Login';
include ('templates/header.inc');

// Print the error message if there is one.
if (isset($message)) {
    echo '<font color="red">', $message, '</font>';
}
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset><legend>Enter your information in the form below:</legend>

<p><b>User Name:</b> <input type="text" name="username" size="10" maxlength="20" value="<?php if (isset($_POST['username'])) echo $_POST['username']; ?>" /></p>

<p><b>Password:</b> <input type="password" name="password" size="20" maxlength="20" /></p>

<div align="center"><input type="submit" name="submit" value="Login" /></div>

</form><!-- End of Form -->

<?php
include ('templates/footer.inc'); // Include the HTML footer.
?>
Avatar billede lsp75 Nybegynder
09. juli 2006 - 20:43 #26
Når jeg skriver if (true) får jeg en meddelelse om at brugernavn og password ikke findes (men det gør det jo)!!

Og så den her:

Array ( [username] => abdulla [password] => abdulla123 [submit] => Log in ) ***SELECT user_id, first_name FROM users WHERE username='' AND password=PASSWORD('')***

Jeg prøver lige det andet, du skrev...
Avatar billede lsp75 Nybegynder
09. juli 2006 - 20:45 #27
der sker det samme (men det regnede du nok også med?)
Avatar billede lsp75 Nybegynder
09. juli 2006 - 20:51 #28
Jeg tror, at det er $u og $p, der ikke virker. Lige som du skrev at if ($u && $p) ikke virker. Jeg tror, at jeg skal omformulere linien: $query = "SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')";
Men hvordan?
Avatar billede iss Novice
09. juli 2006 - 20:53 #29
Før if ($u && $p) { // If everything's OK.
Skriver du lige echo "u:*".$u."*<br>p:*".$p."*";
For det ser ud til at de ikke bliver sat, men så undre det mig at den ikke udskrive en af de fejl.
Avatar billede leif Seniormester
09. juli 2006 - 21:06 #30
Prøv at ændre:
    if ($u && $p) { // if everything's OK
til
    if (isset($u) && isset($p)) { // if everything's OK
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:06 #31
Hvis jeg skriver nedenstående ind, får jeg en blank skærm:

    echo "u:*".$u."*<br>p:*".$p."*";
    if ($u && $p) { // If everything's OK.

Skriver jeg:

    if ($u && $p) { // If everything's OK.
    echo "u:*".$u."*<br>p:*".$p."*";

sker ikke noget nyt. Her får jeg stadig teksten med "Prøv igen." samt denne linie øverst: Array ( [username] => abdulla [password] => abdulla123 [submit] => Log in )

Akurat som før...

Hvad betyder det så?
Avatar billede iss Novice
09. juli 2006 - 21:09 #32
echo "u:*".$u."*<br>p:*".$p."*";
    if ($u && $p) { // If everything's OK.
SKAL som det mindste skrive
u:**
p:**
Gør den ikke har du ikke gjort det rigtigt... Så prøv lige igen med den!
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:10 #33
med: if (isset($u) && isset($p)) { // if everything's OK

sker der det samme, som ovenstående. Dvs. teksten "Prøv igen." samt denne linie øverst: Array ( [username] => abdulla [password] => abdulla123 [submit] => Log in )

Der skete mere dengang jeg skrev if (empty($message)) { // if everything's OK
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:11 #34
jeg prøver lige igen...
Avatar billede iss Novice
09. juli 2006 - 21:11 #35
leif, isset giver også true på variabler der er false...
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:14 #36
Du har ret, jeg må have tastet forkert første gang (da jeg fik blank skærm), for nu får jeg denne tekst øverst:

Array ( [username] => abdulla [password] => abdulla123 [submit] => Log in ) u:**
p:**

Håber det er godt nyt :-)
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:17 #37
Den siger i øvrigt stadig "Prøv igen.".
Avatar billede iss Novice
09. juli 2006 - 21:18 #38
escape_data funktionen laver vist noget møg, prøv lige at lave en echo escape_data("Dette er en test"); i toppen, og se om det komme igennem.
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:23 #39
Det går ikke så godt med den der escape_data funktion. Når jeg sætter den helt i toppen får jeg blank skærm. Når jeg sætter den her:

<?php # login.php

if (isset($_POST['submit'])) { // handle the form
echo escape_data("Dette er en test");
print_r($_POST);
...

får jeg blank skærm når jeg trykker på log in-knappen!!
Avatar billede iss Novice
09. juli 2006 - 21:25 #40
Log på B-gones admin og slå fejl til (mener jeg man kan) Plus du skal sætte den aller først... altså den der echo...
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:27 #41
Når jeg sætter den helt i toppen får jeg blank skærm (kan ikke login-siden).

Altså sådan:

<?php # login.php
echo escape_data("Dette er en test");

if (isset($_POST['submit'])) { // handle the form
...

Jeg prøver lige at finde vej ind til b-one...
Avatar billede iss Novice
09. juli 2006 - 21:30 #42
Jep... Tror escape_data laver fejl...
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:32 #43
Så har jeg sat PHP error messages til "on", men der er stadig blank skærm. B-one fortæller, at der kan gå op til 15 minutter inden at ændringen træder i kræft. I øvrigt står PHP-versionen til 4 og ikke PHP 5, men det er vel også, som det skal være? Min bog er i hvert fald ikke helt ny ;-)
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:34 #44
PHP register globals står til "Off". Jeg ved ikke hvad det betyder, og jeg ved heller ikke, om det er en oplysning, som du kan bruge til noget?
Avatar billede iss Novice
09. juli 2006 - 21:37 #45
Så venter vi da bare, og reg glob skal være off, andet er en fejl...
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:46 #46
stadig blank skærm...
Avatar billede iss Novice
09. juli 2006 - 21:51 #47
Ser ikke ud til at det ændre noget... ser ud til det der $dbc i den funktion laver møg... Prøv at fjerne $dbc fra return mysql_real_escape_string($data, $dbc); så der står return mysql_real_escape_string($data);
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:51 #48
ta-daaaaa...så har jeg en fejlmeddelelse:

Fatal error: Call to undefined function: escape_data() in /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php on line 2
Avatar billede iss Novice
09. juli 2006 - 21:52 #49
Fatal error: Call to undefined function: escape_data() in /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php on line 2 det kom til at virke...
Avatar billede iss Novice
09. juli 2006 - 21:53 #50
Set den der echo test lige før  $message = NULL;.
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:54 #51
WORW - når jeg skriver det, du siger (return mysql_real_escape_string($data);) får jeg alt det her at vide:

Array ( [username] => abdulla [password] => abdulla123 [submit] => Log in ) u:*abdulla*
p:*abdulla123****SELECT user_id, first_name FROM users WHERE username='abdulla' AND password=PASSWORD('abdulla123')***
Warning: Cannot modify header information - headers already sent by (output started at /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php:5) in /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php on line 49

Warning: Cannot modify header information - headers already sent by (output started at /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php:5) in /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php on line 50

Warning: Cannot modify header information - headers already sent by (output started at /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php:5) in /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php on line 51
Avatar billede iss Novice
09. juli 2006 - 21:55 #52
Så virker det...
Array ( [username] => abdulla [password] => abdulla123 [submit] => Log in ) u:*abdulla*
p:*abdulla123****SELECT user_id, first_name FROM users WHERE username='abdulla' AND password=PASSWORD('abdulla123')***
Warning: Cannot modify header information - headers already sent by (output started at /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php:5) in /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php on line 49

Warning: Cannot modify header information - headers already sent by (output started at /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php:5) in /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php on line 50

Warning: Cannot modify header information - headers already sent by (output started at /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php:5) in /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php on line 51
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:56 #53
I linierne 48-52 står der dette:

                // Set the cookies & redirect
                setcookie ('first_name', $row[1]);
                setcookie ('user_id', $row[0]);
                header ("Location:  http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/loggedin.php");
                exit(); // quit the script
Avatar billede iss Novice
09. juli 2006 - 21:56 #54
Du skal bare fjerne alle de der print/echo jeg bad dig skrive...
Avatar billede lsp75 Nybegynder
09. juli 2006 - 21:59 #55
Jeg har sat echo testen (echo escape_data("Dette er en test");
) ind lige før  $message = NULL; og så kommer dette:

Array ( [username] => abdulla [password] => abdulla123 [submit] => Log in ) Dette er en testu:*abdulla*
p:*abdulla123****SELECT user_id, first_name FROM users WHERE username='abdulla' AND password=PASSWORD('abdulla123')***
Warning: Cannot modify header information - headers already sent by (output started at /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php:5) in /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php on line 51

Warning: Cannot modify header information - headers already sent by (output started at /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php:5) in /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php on line 52

Warning: Cannot modify header information - headers already sent by (output started at /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php:5) in /customers/blaagaardsgade25-27.dk/blaagaardsgade25-27.dk/httpd.www/testmappe/login.php on line 53
Avatar billede iss Novice
09. juli 2006 - 22:00 #56
Ja, fjern alle echo/print jeg har bedt dig lave...
Avatar billede lsp75 Nybegynder
09. juli 2006 - 22:00 #57
Det er setcookie volder åbenbart også problemer!
Avatar billede iss Novice
09. juli 2006 - 22:01 #58
Nej... det er som jeg skriver alle de der echo/print jeg bad dig skrive...
Avatar billede lsp75 Nybegynder
09. juli 2006 - 22:03 #59
hey, jeg fjernede alle echo/print og nu siger den:

Du er logget ind som, abdulla!

Det må jo betyde, at det virker nu!!
Avatar billede iss Novice
09. juli 2006 - 22:04 #60
Jep, det var $dbc der lavede møg...
Avatar billede lsp75 Nybegynder
09. juli 2006 - 22:05 #61
Det er fantastisk - hvor er du god!!

Og hvor har jeg bare meget at lære...suk ;-)
Avatar billede lsp75 Nybegynder
09. juli 2006 - 22:06 #62
Tusind tak fordi du brugte al den tid :-)

(Du ser åbenbart heller ikke VM, eller?)

Laver du et svar, så jeg kan give nogle points?
Avatar billede iss Novice
09. juli 2006 - 22:11 #63
Velbekommen, jeg sidder med min bærbare foran TV'et.. :P

Og ellers tak, behold dine point...
Avatar billede lsp75 Nybegynder
09. juli 2006 - 22:14 #64
iiih, jamen så endnu engang tak for hjælpen :-)
Avatar billede morhan Novice
09. juli 2006 - 22:55 #65
Nu du er varmet op, så kan du jo kigge lidt på sikkerheden i cookies vs sessions :)
Avatar billede lsp75 Nybegynder
10. juli 2006 - 22:55 #66
Hej iss og morhan(!)

Har I tid og lyst til at hjælpe med følgende?

Jeg har fået min login.php-side til at fungere (med hjælp fra iss). Når man er logget ind, kan man fx gå til en testside, der hedder "lukket side 1". Url'en ser sådan ud: http://www.blaagaardsgade25-27.dk/testmappe/lukketside1.html

Når jeg åbner en ny browser og copy paster den direkte url, kommer jeg automatisk ind på den lukkede side SELVOM jeg har slettet mine cookies i cookie-folderen!! Skal man ikke lægge et script ind på alle lukkede sider på sitet, der tjekker, om brugeren er logget ind?

Er det det, der er idéen med sessions?
Avatar billede iss Novice
10. juli 2006 - 23:38 #67
Du skal i det mindste lave det som PHP sider der tjekker for om der er en cookie ellers skal den smide en ud.
Avatar billede lsp75 Nybegynder
11. juli 2006 - 18:48 #68
Aah, ja. Det har jeg gjort og det virker :-)
Nu må jeg hellere prøve at gå videre og lære noget om sessions...
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