/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Kan ikke finde fejlen
Fra : Claus Jensen


Dato : 08-11-06 13:05

Nu har jeg ikke lavet php i så lang tid, men jeg prøver da. Koden
kommer her:

<?php
include 'database_login.php';
?>
<style type="text/css">
<!--
..style1 {font-size: 9px}
-->
</style>
<div align="center">
<form name="form1" method="post"
action="index.php?page=login&do=login">
<table width="300" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="100">Brugernavn:</td>
<td><input name="brugernavn" type="text"
id="brugernavn"></td>
</tr>
<tr>
<td height="10"></td>
<td height="10"></td>
</tr>
<tr>
<td>Password:</td>
<td><input name="password" type="password"
id="password"></td>
</tr>
<tr>
<td height="10"></td>
<td height="10"></td>
</tr>
<tr>
<td></td>
<td><div align="right" class="style1">

<div align="center">
<input type="submit" name="Submit" value="Login"
id="knap">
</div>
</div></td>
</tr>
<tr>
<td height="10"></td>
<td height="10"></td>
</tr>
<tr>
<td></td>
<td><span class="style1"><a
href="index.php?page=glemt_password">Glemt password?</a>
</span></td>
</tr>
</table>
</form>
</div>
<?php
if ($_GET['do'] == 'login'   ) {
$login = mysql_query("SELECT * FROM brugere WHERE
brugernavn='$REQUEST["brugernavn"]'") or die(mysql_error());
while ($row = mysql_fetch_array($login)) {
if ($_REQUEST['kodeord'] == '.$row["kodeord"].')
session_start();
$_SESSION["bruger_id"] = .$row["id"].;
$_SESSION["level"] = .$row["level"].;
header("Location: index.php?bruger=ok");
}
else {
header("Location: index.php?page=login&fail=login");
}
}
?>
<?php
if ($_GET['fail'] == 'login'   ) {
echo '<div align=\"left\">Der er enten brugt forkert brugernavn
eller password.<br>Husk at der er forskel på store og små
bogstaver.<br><a href=\"index.php?page=login\">Prøv igen</a>'
}
?>


Problemet er at når jeg går ind på den side, så kommer html'en
ikke frem, og jeg kan som såen ikke finde fejlen i programmet?
der bliver heller ikke udskrevet nogen fejl af php'en.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Nezar Nielsen (08-11-2006)
Kommentar
Fra : Nezar Nielsen


Dato : 08-11-06 13:31

Claus Jensen wrote:
> $login = mysql_query("SELECT * FROM brugere WHERE
> brugernavn='$REQUEST["brugernavn"]'") or die(mysql_error());

^ <-- det der anførselstegn konflikter med det
der starter din select.
Iøvrigt er din kode meget modtagelig for sql-injection, når du ikke
escaper de ting du får ind, før du sender dem ind i sql'en, prøv noget i
stil med:

$login = mysql_query("SELECT * FROM brugere WHERE
brugernavn='".mysql_real_escape_string($REQUEST["brugernavn"])."'") or
die(mysql_error());

> while ($row = mysql_fetch_array($login)) {
> if ($_REQUEST['kodeord'] == '.$row["kodeord"].')
> session_start();
> $_SESSION["bruger_id"] = .$row["id"].;
> $_SESSION["level"] = .$row["level"].;
> header("Location: index.php?bruger=ok");
> }
> else {
> header("Location: index.php?page=login&fail=login");
> }
> }
> ?>

Der er noget syntaxfejl og underlige tuborgklammer her, jeg tror du er
ude efter(at indrykke forøger læsbarheden en HEL DEL):

if(mysql_num_rows($login) == 1){
$row = mysql_fetch_array($login);
if ($_REQUEST['kodeord'] == $row["kodeord"]){
session_start();
$_SESSION["bruger_id"] = .$row["id"].;
$_SESSION["level"] = .$row["level"].;
header("Location: index.php?bruger=ok");
}else {
header("Location: index.php?page=login&fail=login");
}
}else {
header("Location: index.php?page=login&fail=login");
}
} //lukker den første if ($_GET['do'] ...

--
Mvh. Nezar Nielsen
http://gorilla.dk

Claus Jensen (09-11-2006)
Kommentar
Fra : Claus Jensen


Dato : 09-11-06 08:17

Nezar Nielsen wrote in dk.edb.internet.webdesign.serverside.php:
> Claus Jensen wrote:
> > $login = mysql_query("SELECT * FROM brugere WHERE
> > brugernavn='$REQUEST["brugernavn"]'") or die(mysql_error());
>
> ^ <-- det der anførselstegn konflikter med det
> der starter din select.
> Iøvrigt er din kode meget modtagelig for sql-injection, når du ikke
> escaper de ting du får ind, før du sender dem ind i sql'en, prøv noget i
> stil med:
>
> $login = mysql_query("SELECT * FROM brugere WHERE
> brugernavn='".mysql_real_escape_string($REQUEST["brugernavn"])."'") or
> die(mysql_error());
>
> > while ($row = mysql_fetch_array($login)) {
> > if ($_REQUEST['kodeord'] == '.$row["kodeord"].')
> > session_start();
> > $_SESSION["bruger_id"] = .$row["id"].;
> > $_SESSION["level"] = .$row["level"].;
> > header("Location: index.php?bruger=ok");
> > }
> > else {
> > header("Location: index.php?page=login&fail=login");
> > }
> > }
> > ?>
>
> Der er noget syntaxfejl og underlige tuborgklammer her, jeg tror du er
> ude efter(at indrykke forøger læsbarheden en HEL DEL):
>
> if(mysql_num_rows($login) == 1){
> $row = mysql_fetch_array($login);
> if ($_REQUEST['kodeord'] == $row["kodeord"]){
> session_start();
> $_SESSION["bruger_id"] = .$row["id"].;
> $_SESSION["level"] = .$row["level"].;
> header("Location: index.php?bruger=ok");
> }else {
> header("Location: index.php?page=login&fail=login");
> }
> }else {
> header("Location: index.php?page=login&fail=login");
> }
> } //lukker den første if ($_GET['do'] ...
>
> --
> Mvh. Nezar Nielsen
> http://gorilla.dk


Efter at jeg har taget nogle af ideerne til mig er login.php kommet til at
se sådan herud:

<?php
include "database_login.php";
if ($_GET['page2'] == 'login'   ) {
echo "<style type=\"text/css\">
<!--
..style1 {font-size: 9px}
-->
</style>
<div align=\"center\">
<form name=\"form1\" method=\"post\"
action=\"index.php?page=login&do=login\">
<table width=\"300\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td width=\"100\">Brugernavn:</td>
<td><input name=\"brugernavn\" type=\"text\"
id=\"brugernavn\"></td>
</tr>
<tr>
<td height=\"10\"></td>
<td height=\"10\"></td>
</tr>
<tr>
<td>Password:</td>
<td><input name=\"password\" type=\"password\"
id=\"password\"></td>
</tr>
<tr>
<td height=\"10\"></td>
<td height=\"10\"></td>
</tr>
<tr>
<td></td>
<td><div align=\"right\" class=\"style1\">

<div align=\"center\">
<input type=\"submit\" name=\"Submit\" value=\"Login\"
id=\"knap\">
</div>
</div></td>
</tr>
<tr>
<td height=\"10\"></td>
<td height=\"10\"></td>
</tr>
<tr>
<td></td>
<td><span class=\"style1\"><a
href=\"index.php?page=glemt_password\">Glemt password?</a> </span></td>
</tr>
</table>
</form>
</div>";
}
elseif ($_GET['do'] == 'login'   ) {
$login = mysql_query("SELECT * FROM brugere WHERE
brugernavn='$REQUEST["brugernavn"]'") or die(mysql_error());
if(mysql_num_rows($login) == 1){
$row = mysql_fetch_array($login);
if ($_REQUEST['kodeord'] == $row["kodeord"]){
$_SESSION["bruger_id"] = .$row["id"].;
$_SESSION["level"] = .$row["level"].;
header("Location: index.php?bruger=ok");
}else {
header("Location: index.php?page=login&fail=login");
}
}else {
header("Location: index.php?page=login&fail=login");
}
}
elseif ($_GET['fail'] == 'login'   ) {
echo "<div align=\"left\">Der er enten brugt forkert brugernavn eller
password.<br>Husk at der er forskel på store og små bogstaver.<br><a
href=\"index.php?page=login\">Prøv igen</a></div>";
}
?>

login.php bliver included i midten index.php, problemet er at login ikke
udskriver noget, selvom jeg går ind på selve login og skriver
login.php?page2=login, php'en melder ikke fejl, og jeg kan simpelthen ikke
se hvad der er galt? der bliver ikke udskrevet noget som helst, nogen der
som såen kan se hvad fejlen er?

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Claus Jensen (09-11-2006)
Kommentar
Fra : Claus Jensen


Dato : 09-11-06 08:10

Efter at have ændret i php'en og taget noget til mig ser koden sådan
her ud:

<?php
include "database_login.php";
if ($_GET['page2'] == 'login'   ) {
echo "<style type=\"text/css\">
<!--
..style1 {font-size: 9px}
-->
</style>
<div align=\"center\">
<form name=\"form1\" method=\"post\"
action=\"index.php?page=login&do=login\">
<table width=\"300\" border=\"0\" cellspacing=\"0\"
cellpadding=\"0\">
<tr>
<td width=\"100\">Brugernavn:</td>
<td><input name=\"brugernavn\" type=\"text\"
id=\"brugernavn\"></td>
</tr>
<tr>
<td height=\"10\"></td>
<td height=\"10\"></td>
</tr>
<tr>
<td>Password:</td>
<td><input name=\"password\" type=\"password\"
id=\"password\"></td>
</tr>
<tr>
<td height=\"10\"></td>
<td height=\"10\"></td>
</tr>
<tr>
<td></td>
<td><div align=\"right\" class=\"style1\">

<div align=\"center\">
<input type=\"submit\" name=\"Submit\" value=\"Login\"
id=\"knap\">
</div>
</div></td>
</tr>
<tr>
<td height=\"10\"></td>
<td height=\"10\"></td>
</tr>
<tr>
<td></td>
<td><span class=\"style1\"><a
href=\"index.php?page=glemt_password\">Glemt password?</a>
</span></td>
</tr>
</table>
</form>
</div>";
}
elseif ($_GET['do'] == 'login'   ) {
$login = mysql_query("SELECT * FROM brugere WHERE
brugernavn='$REQUEST["brugernavn"]'") or die(mysql_error());
if(mysql_num_rows($login) == 1){
$row = mysql_fetch_array($login);
if ($_REQUEST['kodeord'] == $row["kodeord"]){
$_SESSION["bruger_id"] = .$row["id"].;
$_SESSION["level"] = .$row["level"].;
header("Location: index.php?bruger=ok");
}else {
header("Location: index.php?page=login&fail=login");
}
}else {
header("Location: index.php?page=login&fail=login");
}
}
elseif ($_GET['fail'] == 'login'   ) {
echo "<div align=\"left\">Der er enten brugt forkert brugernavn
eller password.<br>Husk at der er forskel på store og små
bogstaver.<br><a href=\"index.php?page=login\">Prøv igen</a></div>";
}
?>

Denne kode er gemt under en fil kaldet login.php og bliver included
på midten af index.php, problemet er at der ikke bliver skrevet
udskrevet noget, selvom jeg fx går ind på login.php?page2=login,
bliver der ikke skrevet noget? hvad kan det være? der bliver ikke
meldt nogle fejl overhovedet.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jesper Staun Hansen (09-11-2006)
Kommentar
Fra : Jesper Staun Hansen


Dato : 09-11-06 16:00



Claus Jensen wrote:
> Efter at have ændret i php'en og taget noget til mig ser koden sådan
> her ud:
>
> <?php
> include "database_login.php";
> if ($_GET['page2'] == 'login'   ) {
> echo "<style type=\"text/css\">
> <!--
> .style1 {font-size: 9px}
> -->
> </style>
> <div align=\"center\">
> <form name=\"form1\" method=\"post\"
> action=\"index.php?page=login&do=login\">
> <table width=\"300\" border=\"0\" cellspacing=\"0\"
> cellpadding=\"0\">
> <tr>
> <td width=\"100\">Brugernavn:</td>
> <td><input name=\"brugernavn\" type=\"text\"
> id=\"brugernavn\"></td>
> </tr>
> <tr>
> <td height=\"10\"></td>
> <td height=\"10\"></td>
> </tr>
> <tr>
> <td>Password:</td>
> <td><input name=\"password\" type=\"password\"
> id=\"password\"></td>
> </tr>
> <tr>
> <td height=\"10\"></td>
> <td height=\"10\"></td>
> </tr>
> <tr>
> <td></td>
> <td><div align=\"right\" class=\"style1\">
>
> <div align=\"center\">
> <input type=\"submit\" name=\"Submit\" value=\"Login\"
> id=\"knap\">
> </div>
> </div></td>
> </tr>
> <tr>
> <td height=\"10\"></td>
> <td height=\"10\"></td>
> </tr>
> <tr>
> <td></td>
> <td><span class=\"style1\"><a
> href=\"index.php?page=glemt_password\">Glemt password?</a>
> </span></td>
> </tr>
> </table>
> </form>
> </div>";
> }
> elseif ($_GET['do'] == 'login'   ) {
> $login = mysql_query("SELECT * FROM brugere WHERE
> brugernavn='$REQUEST["brugernavn"]'") or die(mysql_error());
> if(mysql_num_rows($login) == 1){
> $row = mysql_fetch_array($login);
> if ($_REQUEST['kodeord'] == $row["kodeord"]){
> $_SESSION["bruger_id"] = .$row["id"].;
> $_SESSION["level"] = .$row["level"].;
> header("Location: index.php?bruger=ok");
> }else {
> header("Location: index.php?page=login&fail=login");
> }
> }else {
> header("Location: index.php?page=login&fail=login");
> }
> }
> elseif ($_GET['fail'] == 'login'   ) {
> echo "<div align=\"left\">Der er enten brugt forkert brugernavn
> eller password.<br>Husk at der er forskel på store og små
> bogstaver.<br><a href=\"index.php?page=login\">Prøv igen</a></div>";
> }
> ?>
>
> Denne kode er gemt under en fil kaldet login.php og bliver included
> på midten af index.php, problemet er at der ikke bliver skrevet
> udskrevet noget, selvom jeg fx går ind på login.php?page2=login,
> bliver der ikke skrevet noget? hvad kan det være? der bliver ikke
> meldt nogle fejl overhovedet.
>

Her kommer et lille trick til at undgå alle de \ du har

<?php
include "database_login.php";
if ($_GET['page2'] == 'login'   ) {
?>
<style type="text/css">
<!--
..style1 {font-size: 9px}
-->
</style>
<div align="center">
<form name="form1" method="post"
action="index.php?page=login&do=login">
<table width="300" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="100">Brugernavn:</td>
<td><input name="brugernavn" type="text"
id="brugernavn"></td>
</tr>
<tr>
<td height="10"></td>
<td height="10"></td>
</tr>
<tr>
<td>Password:</td>
<td><input name="password" type="password"
id="password"></td>
</tr>
<tr>
<td height="10"></td>
<td height="10"></td>
</tr>
<tr>
<td></td>
<td><div align="right" class="style1">

<div align="center">
<input type="submit" name="Submit" value="Login"
id="knap">
</div>
</div></td>
</tr>
<tr>
<td height="10"></td>
<td height="10"></td>
</tr>
<tr>
<td></td>
<td><span class="style1"><a
href="index.php?page=glemt_password">Glemt password?</a>
</span></td>
</tr>
</table>
</form>
</div>
<?php
}
elseif ($_GET['do'] == 'login'   ) {
$login = mysql_query("SELECT * FROM brugere WHERE
brugernavn='$REQUEST["brugernavn"]'") or die(mysql_error());
if(mysql_num_rows($login) == 1){
$row = mysql_fetch_array($login);
if ($_REQUEST['kodeord'] == $row["kodeord"]){
$_SESSION["bruger_id"] = .$row["id"].;
$_SESSION["level"] = .$row["level"].;
header("Location: index.php?bruger=ok");
}else {
header("Location: index.php?page=login&amp;fail=login");
}
}else {
header("Location: index.php?page=login&amp;fail=login");
}
}
elseif ($_GET['fail'] == 'login') {
?>
<div align="left">Der er enten brugt forkert brugernavn
eller password.<br>Husk at der er forskel på store og små
bogstaver.<br><a href="index.php?page=login">Prøv igen</a></div>
<?php
}
?>

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste