Avatar billede craliz2 Nybegynder
15. juli 2007 - 14:31 Der er 36 kommentarer

Hvad er er fejlen i disse scripts.. siden jeg får denne fejl!

Loginscriptet:
<?php
require_once('connect.php');
if ($_POST['action'] == "login") {
    $data = mysql_query("SELECT * FROM brugere WHERE login = '" . $_POST['login'] . "' AND password = '" . $_POST['password'] . "'") or die(mysql_error());
    $num = mysql_numrows($data);
    $row = mysql_fetch_array($data);
    if($num == 0){
        header("location: login.php?error=1");
        echo "Du har indtastet forkert brugernavn/password";
    } else {
        session_start();
        $_SESSION["brugernavn"] = $_POST['login'];
        $_SESSION["password"] = $_POST['password'];
        $_SESSION["level"] = $row['level'];
        header("location: brugerside" . $_SESSION['level'] .".php");
        exit;
    }
}
switch ($_GET['error']) {
case "1":
    echo "<font color='#FFFFFF'>Du har indtastet forkert brugernavn/password.</font>";
    break;
case "2":
    echo "<font color='#FFFFFF'>Du er ikke logget ind.</font>";
    break;
case "3":
    echo "<font color='#FFFFFF'>Dit brugernavn findes ikke i databasen.</font>";
    break;
case "4":
    echo "<font color='#FFFFFF'>Din bruger rettighed passer ikke sammen med siden du prøvede og benytte.</font>";
    break;
}
?>

<body background='feltbg.jpg'>
<body bgproperties='fixed'>
<html>
<head>
<meta http-equiv="Content-Language" content="da">
<link rel="stylesheet" type="text/css" href="box.css">
<body style="text-align: center">
<body bgcolor='#000000' style="text-align: center">


<p><b><font face="Verdana" size="2" color="#FFFFFF">Log på</font></b></p>


<form action='<?php echo $_SERVER[PHP_SELF]; ?>' method="post"> <table cellspacing="0" cellpadding="0"

border="0">
<tr>
    <td width="200" align="center">
    <input type="Text" name="login" value="Login" size="20" style="float: left"><input type="hidden" name="action"

value="login"><br></td>
</tr>
<tr>
    <td width="200" align="center">
    <input type="password" name="password" type="hidden" value="Password" size="20" style="float: left"><br></td>
</tr>
<tr>
    <td width="240" align="center">
    <input type='submit' value='login' style="float: left"></td>
</tr>
</table>
    </form>
</body>
</html>

Brugerscripbtet:


<?php
session_start();
if (!$_SESSION['password']) {
    echo "Gå til forsiden og log ind";
} else {
    if($_SESSION['level'] == "12") {
        require_once('connect.php');
        $data = mysql_query("SELECT * FROM brugere WHERE login = '" . $_SESSION['brugernavn'] . "' AND password = '" . $_SESSION['password'] . "'") or die(mysql_error());
        $num = mysql_numrows($data);
        if($num == 0){
            echo "Din bruger findes ikke i databasen";
            session_unset();
            session_destroy();
        } else {
?>
<a href='addadmin.php'><font color='#000000'><span style='text-decoration: none'>Tilføj eller fjern bruger</span></font></a><font color='#FFFFFF'><br></font><a href='banip.php?noget=5654'><font color='#000000'><span style='text-decoration: none'>ban</span></font></a><font color='#000000'><br></font><a href='sletban.php?noget=5654'><font color='#000000'><span style='text-decoration: none'>unban</span></font></a><font color='#000000'><br></font><a href='remote.php?noget=5654'>
<?php
        }
    } else {
        echo "Du har ikke rettigheder til at se denne side";
    }
}
?>


Skriver jeg bruger og password rigtigt får jeg denne besked! :


Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at logon.php:2) in logon.php on line 12

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at logon.php:2) in logon.php on line 12

Warning: Cannot modify header information - headers already sent by (output started at logon.php:2) in


Og skriver jeg det bare forkert så siger den:

Warning: Cannot modify header information - headers already sent by (output started at logon.php:2) in logon.php on line 9
Du har indtastet forkert brugernavn/password

I må meget gerne hjælpe :)
Avatar billede hmortensen Nybegynder
15. juli 2007 - 14:34 #1
Er der mellemrum eller linieskift før <?php i connect.php?
Avatar billede craliz2 Nybegynder
15. juli 2007 - 14:47 #2
ja 2.
Avatar billede craliz2 Nybegynder
15. juli 2007 - 15:00 #3
så det er vel ikke det..
Avatar billede jakobdo Ekspert
15. juli 2007 - 15:34 #4
Jo det er!
Hvis vi siger du har en fil ala:

FILSTART

<?php
//Noget data
?>

FILSLUT

De mellemrum/newlines før og efter <?php og ?> opfattes som output og det "ødelægger" kald til header().
Avatar billede craliz2 Nybegynder
15. juli 2007 - 16:24 #5
Altså.. nu har jeg sat den sådan her:

<?php $server = "server";
$bruger = "bruger";
$kodeord = "kode";
$database = "database";
mysql_connect($server,$bruger,$kodeord) OR DIE(  "Kunne ikke

etabler en forbindelse til MySQLen.!");
mysql_select_db($database) OR DIE(  "Kunne ikke finde

databasen!"); ?>


Men jeg får stadig fejlen! hmm
Avatar billede craliz2 Nybegynder
15. juli 2007 - 16:25 #6
<?php $server = "server";
$bruger = "bruger";
$kodeord = "kode";
$database = "database";
mysql_connect($server,$bruger,$kodeord) OR DIE(  "Kunne ikke etabler en forbindelse til MySQLen.!");
mysql_select_db($database) OR DIE(  "Kunne ikke finde databasen!"); ?>

sådan her.
Avatar billede hmortensen Nybegynder
15. juli 2007 - 16:28 #7
Der er heller ikke noget efter  "?>" ?
Avatar billede craliz2 Nybegynder
15. juli 2007 - 16:43 #8
det er der da. til sidst.. ?
Avatar billede craliz2 Nybegynder
15. juli 2007 - 16:47 #9
Så ved ik lige hvad fejlen er.. :O
Avatar billede jakobdo Ekspert
15. juli 2007 - 17:08 #10
Så det vil sige du ikke har tomme felter, data eller lign før eller efter <?php og ?>
Men kun kode imellem de 2 tags?
Avatar billede craliz2 Nybegynder
15. juli 2007 - 17:27 #11
<?php mysql_connect("mysql.buydomains.dk","bruger","pass") OR DIE(  "Kunne ikke etabler en forbindelse til MySQLen.!");
mysql_select_db("database") OR DIE(  "Kunne ikke finde databasen!");
?>

Nu har jeg lavet sådan. men har stadig fejl.. ER der fejl i dumpen i mysql så.. altså hvordan den er sat op til "brugere" ?

Den ser således ud:

CREATE TABLE `brugere` (
`id` int( 6 ) NOT NULL AUTO_INCREMENT ,
`login` varchar( 16 ) NOT NULL default '',
`password` varchar( 16 ) NOT NULL default '',
`level` smallint( 2 ) NOT NULL default '0',
PRIMARY KEY ( `id` )
) TYPE = MYISAM AUTO_INCREMENT =17;
Avatar billede jakobdo Ekspert
15. juli 2007 - 17:32 #12
Det har ikke noget med dit dump at gøre.
Den skriver fejlen er i logon.php linie 2 og 12.
Hvordan ser koden ud i den?
Avatar billede craliz2 Nybegynder
15. juli 2007 - 17:37 #13
Det er den kode der står øverst :) Logon.php
Avatar billede hmortensen Nybegynder
15. juli 2007 - 17:41 #14
Prøv at sætte indholdet af connect.php ind i logon.php i stedet for require linie.
Avatar billede craliz2 Nybegynder
15. juli 2007 - 17:46 #15
bare øverst?
Avatar billede craliz2 Nybegynder
15. juli 2007 - 17:48 #16
Det gør ingen forskel.. får stadig den samme fejl.. :(
Avatar billede jakobdo Ekspert
15. juli 2007 - 18:09 #17
Prøv at vis din kode for logon.php (husk at ret brugernavn og kodeord)
Avatar billede craliz2 Nybegynder
15. juli 2007 - 18:15 #18
Som sagt har jeg skrevet koden.. Det er den det hele indleder med :) den står øverst.
Avatar billede jakobdo Ekspert
15. juli 2007 - 18:31 #19
Men du har jo tydeligvis en fejl et sted...
Avatar billede craliz2 Nybegynder
15. juli 2007 - 18:41 #20
Ja.. Men jeg kan ikke finde den.. Så i må meget gerne prøve at hjælpe!!! :)
Avatar billede jakobdo Ekspert
15. juli 2007 - 18:49 #21
Det er jo også derfor jeg skrev: 15/07-2007 18:09:09
Prøv at ret som hmortensen siger: 15/07-2007 17:41:57
Avatar billede craliz2 Nybegynder
15. juli 2007 - 18:54 #22
Nårh :) jamen så vil det se sådan her ud.



<?php

php mysql_connect("server","bruger","kode") OR DIE(  "Kunne ikke etabler en forbindelse til MySQLen.!");
mysql_select_db("database") OR DIE(  "Kunne ikke finde databasen!");

if ($_POST['action'] == "login") {
    $data = mysql_query("SELECT * FROM brugere WHERE login = '" . $_POST['login'] . "' AND password = '" . $_POST['password'] . "'") or die(mysql_error());
    $num = mysql_numrows($data);
    $row = mysql_fetch_array($data);
    if($num == 0){
        header("location: login.php?error=1");
        echo "Du har indtastet forkert brugernavn/password";
    } else {
        session_start();
        $_SESSION["brugernavn"] = $_POST['login'];
        $_SESSION["password"] = $_POST['password'];
        $_SESSION["level"] = $row['level'];
        header("location: brugerside" . $_SESSION['level'] .".php");
        exit;
    }
}
switch ($_GET['error']) {
case "1":
    echo "<font color='#FFFFFF'>Du har indtastet forkert brugernavn/password.</font>";
    break;
case "2":
    echo "<font color='#FFFFFF'>Du er ikke logget ind.</font>";
    break;
case "3":
    echo "<font color='#FFFFFF'>Dit brugernavn findes ikke i databasen.</font>";
    break;
case "4":
    echo "<font color='#FFFFFF'>Din bruger rettighed passer ikke sammen med siden du prøvede og benytte.</font>";
    break;
}
?>

<body background='feltbg.jpg'>
<body bgproperties='fixed'>
<html>
<head>
<meta http-equiv="Content-Language" content="da">
<link rel="stylesheet" type="text/css" href="box.css">
<body style="text-align: center">
<body bgcolor='#000000' style="text-align: center">


<p><b><font face="Verdana" size="2" color="#FFFFFF">Log på</font></b></p>


<form action='<?php echo $_SERVER[PHP_SELF]; ?>' method="post"> <table cellspacing="0" cellpadding="0"

border="0">
<tr>
    <td width="200" align="center">
    <input type="Text" name="login" value="Login" size="20" style="float: left"><input type="hidden" name="action"

value="login"><br></td>
</tr>
<tr>
    <td width="200" align="center">
    <input type="password" name="password" type="hidden" value="Password" size="20" style="float: left"><br></td>
</tr>
<tr>
    <td width="240" align="center">
    <input type='submit' value='login' style="float: left"></td>
</tr>
</table>
    </form>
</body>
</html>
Avatar billede craliz2 Nybegynder
15. juli 2007 - 18:58 #23
Ok, nu siger den så en ny fejl.. også kommer linksne frem med fejlen ovenover.
Men nu er fejlen ikke i logon.php mere kan jeg se.. nu er den i brugerside12.php. I kan se brugerside12 i det første indlæg.


Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\hjemmeside\brugerside12.php:2) in D:\hjemmeside\brugerside12.php on line 3
Tilføj eller fjern bruger
ban
unban
Avatar billede jakobdo Ekspert
15. juli 2007 - 18:59 #24
Hov: $num = mysql_numrows($data);
Den linie skal da være:

$num = mysql_num_rows($data);
Avatar billede craliz2 Nybegynder
15. juli 2007 - 19:02 #25
Det er eddermandme godt.. nu er mit webhotel lige gået ned.. så skal lige vente til det kommer op igen.. Kan det være fejlen tror du ;) retter det lige
Avatar billede craliz2 Nybegynder
15. juli 2007 - 19:19 #26
Okay, så er der updates fra mig :)

Det der sker nu er.
1) Hvis jeg skriver brugernavn og kodeord forkert, så ryger jeg på http://www.alexandert.com/login.php?error=1 hvor der kommer en sidefrem som siden ikke findes.. Den burde sige noget med at det ikke var korrekt bruger og password? ik?

2) Når jeg skriver bruger og kodeord rigtigt. SÅ går den faktisk ind på brugerside12.php - men alle mine muligheder som den burde vise kommer ikke. Så står der bare :

Muligheder for Super Admin
Gå til forsiden og log ind.

Så der må være noget mere galt.. heh
Avatar billede mclemens Nybegynder
15. juli 2007 - 19:29 #27
1. Hjælper det hvis du angiver fulde sti i
header("location: login.php?error=1"); ?

2. Resulterer $_SESSION["level"] = $row['level'];
i at du får den rigtige level (12) ? Er sessionen
startet ordentligt op (at den ikke melder fejl på
session_start() fordi den måske startes efter output)?

- Jeg kan ikke se nogle steder i det tidligere at
der står "Muligheder for Super Admin" så det er også
muligt at fejlen ligger i noget der ikke synligt.

... En anden årsag til at noget ikke vises kan
være markup'en. Kig evt. senere på en validering
(4x body elementer i det første script).
Avatar billede mclemens Nybegynder
15. juli 2007 - 19:37 #28
Husk at rette jakobdo's 15/07-2007 18:59:57 rettelse begge steder i kodningen.
Avatar billede craliz2 Nybegynder
15. juli 2007 - 19:38 #29
Har blandet to brugerscripts sammen nu kan jeg se.. 2 sec.. det med mulighed for superadmin er det tidligere script jeg havde.. heh.. Men header("location: logon.php?error=1") er jo den fulde sti i login.php? eller hvad mener du ?

Altså det der skal se er at jeg i databasen har angivet et brugernavn, pass og level.. Når en person så skriver brugernavn og pass skal den så selv fange hvilket level man har. i dette tilfælde 12. Er lidt ny inde for php. så forstår ik det sidste du skriver. med 4x body elementer..
Avatar billede mclemens Nybegynder
15. juli 2007 - 19:49 #30
... header("location: http://www.beruset_sti.dk/logon.php?error=1")

"Altså det der skal se er at jeg i databasen har angivet et brugernavn, pass og level ... selv fange hvilket level man har. i dette tilfælde 12." En udskrivning af værdierne kan evt. kontrollere om man fanger de rigtige værdier fra sessionen. Men, da du nævner at du har blandet to filer sammen ved postningen, kan det også være der fejlen er.

"Er lidt ny inde for php. så forstår ik det sidste du skriver. med 4x body elementer.."
Loginscriptet:
...
<body background='feltbg.jpg'>
<body bgproperties='fixed'>
<html>
<head>
<meta http-equiv="Content-Language" content="da">
<link rel="stylesheet" type="text/css" href="box.css">
<body style="text-align: center">
<body bgcolor='#000000' style="text-align: center">

- 4 x body elementer. Den del er mere html end php relateret, men markup kan i visse tilfælde drille browsere, så ting ikke er synlig afhængig af markup (og css).
Avatar billede craliz2 Nybegynder
15. juli 2007 - 21:29 #31
Okay.. Jeg tror der er styr på logondelen nu.. Nu må fejlen være i brugersidedelen... Når jeg skriver forkert password giver den mig tilbage at jegf har skrevet brugernavn eller password forkert. hvilket er korrekt. Men når jeg skriver koden rigtigt så header den til også til brugerside12.php hvilket er super :) men så er der fejl på brugerside12 delen.. fordi på siden står der:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at brugerside12.php:2) in brugerside12.php on line 3
Tilføj eller fjern bruger
ban
unban

htmldelen ser man.. men der er stadig noget galt heh.
Avatar billede jakobdo Ekspert
15. juli 2007 - 21:42 #32
Hvad har du på linie 2 og 3 i filen: brugerside12.php ?
Avatar billede craliz2 Nybegynder
15. juli 2007 - 21:58 #33
Dette:
<?php
session_start();
if (!$_SESSION['password']) {
    echo "Gå til forsiden og log ind";
} else {
    if($_SESSION['level'] == "12") {
        require_once('connect.php');
        $data = mysql_query("SELECT * FROM brugere WHERE login = '" . $_SESSION['brugernavn'] . "' AND password = '" . $_SESSION['password'] . "'") or die(mysql_error());
        $num = mysql_num_rows($data);
        if($num == 0){
            echo "Din bruger findes ikke i databasen";
            session_unset();
            session_destroy();
        } else {
?>
<a href='addadmin.php'><font color='#000000'><span style='text-decoration: none'>Tilføj eller fjern bruger</span></font></a><font color='#FFFFFF'><br></font><a href='banip.php?noget=5654'><font color='#000000'><span style='text-decoration: none'>ban</span></font></a><font color='#000000'><br></font><a href='sletban.php?noget=5654'><font color='#000000'><span style='text-decoration: none'>unban</span></font></a><font color='#000000'><br></font><a href='remote.php?noget=5654'>
<?php
        }
    } else {
        echo "Du har ikke rettigheder til at se denne side";
    }
}
?>
Avatar billede jakobdo Ekspert
15. juli 2007 - 22:21 #34
Prøv at ret:
if (!$_SESSION['password'])
til:
if(!isset($_SESSION['password']))
Avatar billede craliz2 Nybegynder
15. juli 2007 - 22:25 #35
Du er fantastisk!! :D Nu virker det!!! Må til at begynde at læse php noget mere så jeg ik har brug for alt det hjælp! Tusind tak. SKriver igen hvis der er problemer :)
Avatar billede jakobdo Ekspert
16. juli 2007 - 07:27 #36
Du får et svar.
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