Avatar billede fhansen Praktikant
02. februar 2007 - 13:53 Der er 8 kommentarer og
1 løsning

Login igen, jeg løbet sur i mit script

Hejsa.

Jeg er løbet fuldstændig sur i mit Login script, jeg kan ikke finde fejlen, jeg vil da håbe at en af jer kan se fejlen, ellers må jeg begynde forfra.
Scriptet er lavet udfra forskellige eks. fra nettet.

Kan man læse sessions ?, forstået på den måde at indholdet af f.eks. $_session[User] kunne bruges ID i et forum eller lign.

Hilsen


Finn


Bruger.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<?php
$host = "localhost";
$user = "root";
$pass = "9lfisk";
$database = "Havnedata";
$db_navn = "Sejler";
include("minefiler/settings.php");
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<style type="text/css">
<!--

#Layer2 {
    position:absolute;
    left:0px;
    top:0px;
    width:200px;
    height:185px;
    z-index:2;
}
#Layer3 {
    position:absolute;
    left:0px;
    top:0px;
    width:200px;
    height:185px;
    z-index:2;
}
.style5 {
    color: #FFFFFF;
    font-weight: bold;
}
body,td,th {
    font-family: Tahoma;
    color: #FFFFFF;
}
a:visited {
    color: #FFFFCC;
}
-->
</style>
</head>

<body>
<?php
// session besked bruges til at vise en besked ved fejl i login, $default_text
// Husk at vi startede sessions i settings.php !

// Er session besked sat ???
if(isset($_SESSION["besked"])) {

// Vis den for brugeren
    echo $_SESSION["besked"];

// Og slet derefter session besked
    unset($_SESSION["besked"]);
}


// Hvis brugeren IKKE er logget ind, vis loginformular
if(false == check_login()) {

?>

<div id="Layer2"  style=" background-color:#FF0000;  filter:alpha(opacity=40);-moz-opacity:.4;opacity:.4;"></div>
<div id="Layer3">
<table width="200" border="0" cellspacing="1"  style="font-size:12px">
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" class="style7">
  <tr>
    <td width="5%" rowspan="8"></td>
    <td width="90%" ><span class="style5">Login:</span></td>
    <td width="5%" rowspan="8"></td>
  </tr>
  <tr>
    <td>Brugernavn</td>
    </tr>
  <tr>
    <td><input type="text" name="brugernavn" /></td>
    </tr>
  <tr>
    <td>Password</td>
    </tr>
  <tr>
    <td><input type="password" name="password" /></td>
  </tr>
  <tr>
    <td><input type="submit" value="Login" /></td>
  </tr>
  <tr>
    <td><a href="">Har du glemt dit password ?</a></td>
  </tr>
</form> 
</table>
</div>
<?php
}else{
// Brugeren er logget ind, lav en log ud knap
?>
<div id="Layer2"  style="background-color:#66CC66;  filter:alpha(opacity=40);-moz-opacity:.4;opacity:.4;"></div>
<div id="Layer3" >
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
  <div align="center">Velkommen<br/>
    <? echo $users['Navn']; ?><br/>
    <input name="logud" type="submit" value="Log ud" />
  </div>
</form>
</div>
<?php
} // end false tjek_login
?>
</body>
</html>

-------------------------------------------------------
Settings.php
<?php

$base_dir = "minefiler/";

$base_file = "bruger.php";

$defalut_file = $base_dir ."bruger.php";

function check_login() {

global $user;

    if(isset($_SESSION["user"], $_SESSION["ip"]) && $_SESSION["ip"] == $_SERVER["REMOTE_ADDR"]) {
   
    return true;
    }

return false;
}

session_start();

if(isset($_POST["logud"])) {

    $_SESSION = array();
    session_destroy();

    /*header("Location:http://". $_SERVER["HTTP_HOST"] . $base_file);
    exit;*/
}

if(isset($_POST["brugernavn"], $_POST["password"])) {

$default_text = "Forkert bruger og/eller password!";

        $db = @mysql_pconnect($host, $user, $pass) or die ("Kunne desværre ikke forbinde til databasen!");
        @mysql_select_db($database, $db) or die ("Kunne desværre ikke forbinde til valgte database!");
       
        $sql = 'SELECT Navn, Plads FROM Sejler  WHERE Login = ' . $_POST["brugernavn"] .' AND Password = '. $_POST["password"];
        $check = mysql_query($sql) or die ($default_text);

      /*if(mysql_num_rows($check) != 0)*/
       
        $users = mysql_fetch_array($check);

            $_SESSION["user"] = $_POST["brugernavn"];
            $_SESSION["ip"] = $_SERVER["REMOTE_ADDR"];
            $_SESSION["Navn"] = $users['Navn'];
            $_SESSION["plads"] = $users['plads'];
        }else{

            $_SESSION["besked"] = $default_text;
}
?>

--------------------------------------------------
Dette script bliver indsat på de sider der kun må læse, hvis man er logget ind.
<?php
include("settings.php");
if (check_login() == false){
    include("./error.html");
    exit;
   
} else {
   
}
?>
Avatar billede sw_red_6 Nybegynder
02. februar 2007 - 13:58 #1
hvad er det der er galt?
Avatar billede gentlebug Nybegynder
02. februar 2007 - 16:55 #2
start dit dokument med
<?php
session_start();
//http://dk2.php.net/manual/en/function.session-start.php
?>

- det kunne evt. være du skulle skifte din kode til din mysql, du har lige postet den til alle :)
Avatar billede fhansen Praktikant
02. februar 2007 - 20:26 #3
*GGG* ja jeg burde have skrevet min fejl meddelser.
Session_start bliver echoet.

scriptet der checker login fra siderne virker, returnere false.
Avatar billede showsource Seniormester
02. februar 2007 - 20:44 #4
det ligner noget som er taget herfra,
http://www.phpbegynder.dk/artikler.php?id=14&page=1 ( opdateret efter du har været der )
og virker det ikke, ( med dine tilpasniger) vil jeg gerne prøve at hjælpe.

session_start();
sættes i settings.php

altså, du skal nok bruge:

Bruger.php

<?php
include("minefiler/settings.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>.....resten af doc
Avatar billede fhansen Praktikant
02. februar 2007 - 21:00 #5
Det er korrekt, at der er taget en del derfra.

Scriptet virker, uden at jeg har lavet ændringer, men jeg får denne warning

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\apache\htdocs\Havn\Bruger.php:4) in C:\apache\htdocs\Havn\Minefiler\settings.php on line 22

Session_Start() er med i line 22, det er den der laver sjov med mig lige nu.

include "minefiler/settings.php er med i line 10.

Jeg har kigget meget i diverse hjælpefiler, men kan ikke gennemskue fejlen.

Skal da lige sige at jeg er helt ny php.........men jeg vild med det

finn
Avatar billede fhansen Praktikant
02. februar 2007 - 21:01 #6
gentlebug dit svar hjalp mig ikke
Avatar billede fhansen Praktikant
02. februar 2007 - 21:03 #7
kan jeg ligge session_start over i bruger.php
Avatar billede fhansen Praktikant
02. februar 2007 - 21:17 #8
Damn har da lige fundet fejlen, det er var lidt pineligt, det var jo bare include der skulle flyttes på som det første på siden.
Avatar billede fhansen Praktikant
01. december 2010 - 23:05 #9
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