Avatar billede mrbs Nybegynder
16. februar 2006 - 22:19 Der er 16 kommentarer og
1 løsning

Logger ind uden resultat

Jeg har følgende kode, som bliver inkluderet med include(). Det den skulle gøre er, at den tjekker i en session om en bruger er ogget indl. Hvis ikke, viser den en login-form.
Når jeg skriver de informationer jeg har indtastet i databasen er det meningen at den så skal vise siden, men det gør den ikke! Kan nogen fortælle hvorfor?
Kan det evt. have noget at gøre med at den krypterer kodeordet? Og hvad er evt. løsningen på dette?

Mads

Kode:


<?php
include('../header.php');
require_once("../$lang_path/$lang_select");
session_start();
?>

<div class="bluediv">

<?php
if(!isset($username) | !isset($password)) {
?>

<form action="" method="POST">
<p align="center">Members only. Please login to access this document.</p>
<table align="center" border="0">
<tr>
  <th>
Username:
  </th>
  <th>
<input type="text" name="username" class="inputtext">
  </th>
</tr>
<tr>
  <th>
Password:
  </th>
  <th>
<input type="password" name="password" class="inputtext">
  </th>
</tr>
<tr>
  <th colspan="2" align="right">
<input type="submit" value="Login" class="formbutton">
</form>
  </th>
</tr>
</table>
</div>

<?
exit();
}

session_register("username");
session_register("password");

$conn = mysql_connect("$db_url", "$db_user", "$db_pass") or die(mysql_error());
mysql_select_db("$db_name") or die(mysql_error());

$sql = mysql_query("SELECT password FROM edito_users WHERE username = '$username'");
$fetch_em = mysql_fetch_array($sql) or die(mysql_error());
$numrows = mysql_num_rows($sql) or die(mysql_error());

if($numrows != "0" & $password == $fetch_em["password"]) {
$valid_user = 1;
}
else {
$valid_user = 0;
}

if (!($valid_user))
{
session_unset();
session_destroy();

?>

<form action="<?=$PHP_SELF?><?if($QUERY_STRING){ echo"?". $QUERY_STRING;}?>" method="POST">
<p align="center">NOGET OM FORKERT KODE</p>
<table align="center" border="0">
<tr>
  <th>
Username:
  </th>
  <th>
<input type="text" name="username" class="inputtext">
  </th>
</tr>
<tr>
  <th>
Password:
  </th>
  <th>
<input type="password" name="password" class="inputtext">
  </th>
</tr>
<tr>
  <th colspan="2" align="right">
<input type="submit" value="Login" class="formbutton">
</form>
  </th>
</tr>
</table>

</div>

<?
exit();
}
?>
Avatar billede yezbarh Nybegynder
16. februar 2006 - 22:23 #1
if($numrows != "0" & $password == $fetch_em["password"]) {

Skal hvertifald være

if($numrows != 0 && $password == $fetch_em["password"]) {
Avatar billede yezbarh Nybegynder
16. februar 2006 - 22:24 #2
Og:
<?php
if(!isset($username) | !isset($password)) {
?>
til
<?php
if(!isset($username) || !isset($password)) {
?>

Og session_start(); skal altid placeres ØVERST i dokumentet, HELT øverst!

--
yezbarh
Avatar billede erikjacobsen Ekspert
16. februar 2006 - 22:33 #3
Du bør bruge $_SESSION-arrayet, og ikke session_register.
Avatar billede mrbs Nybegynder
16. februar 2006 - 22:37 #4
ericjacobsen -> Hvordan ser sådan en linie ud?
Avatar billede yezbarh Nybegynder
16. februar 2006 - 22:37 #5
$_SESSION['registreret_session']
Avatar billede mrbs Nybegynder
16. februar 2006 - 22:38 #6
Det virker i øvrigt stadig ikke efter disse rettelser!
Avatar billede erikjacobsen Ekspert
16. februar 2006 - 22:38 #7
Og i dit tilfælde fx  $_SESSION['username']
Avatar billede mrbs Nybegynder
16. februar 2006 - 22:41 #8
:) Yes

Men stadig ikke noget resulatat :(
Avatar billede erikjacobsen Ekspert
16. februar 2006 - 22:42 #9
Må vi se?
Avatar billede mrbs Nybegynder
16. februar 2006 - 22:46 #10
Altså siden hvor den ligger eller koden?
Avatar billede yezbarh Nybegynder
16. februar 2006 - 22:46 #11
Hele dit dokument.
Avatar billede mrbs Nybegynder
16. februar 2006 - 22:50 #12
Dette er hele dokumentet som bliver 'included' fra de sider der skal sikres!

Skal session start endnu højere op end i include-filen?

<?php
session_start();
include('../header.php');
require_once("../$lang_path/$lang_select");
?>

<div class="bluediv">

<?php
if(!isset($username) || !isset($password)) {
?>

<form action="" method="POST">
<p align="center">Members only. Please login to access this document.</p>
<table align="center" border="0">
<tr>
  <th>
Username:
  </th>
  <th>
<input type="text" name="username" class="inputtext">
  </th>
</tr>
<tr>
  <th>
Password:
  </th>
  <th>
<input type="password" name="password" class="inputtext">
  </th>
</tr>
<tr>
  <th colspan="2" align="right">
<input type="submit" value="Login" class="formbutton">
</form>
  </th>
</tr>
</table>
</div>



<?
exit();
}

$_SESSION['username'];
$_SESSION['password'];

$conn = mysql_connect("$db_url", "$db_user", "$db_pass") or die(mysql_error());
mysql_select_db("$db_name") or die(mysql_error());

$sql = mysql_query("SELECT password FROM edito_users WHERE username = '$username'");
$fetch_em = mysql_fetch_array($sql) or die(mysql_error());
$numrows = mysql_num_rows($sql) or die(mysql_error());

if($numrows != 0 && $password == $fetch_em["password"]) {
$valid_user = 1;
}
else {
$valid_user = 0;
}


if (!($valid_user))
{
session_unset();
session_destroy();

?>

<form action="<?=$PHP_SELF?><?if($QUERY_STRING){ echo"?". $QUERY_STRING;}?>" method="POST">
<p align="center">Incorrect login information, please try again. You must login to access this document.</p>
<table align="center" border="0">
<tr>
  <th>
Username:
  </th>
  <th>
<input type="text" name="username" class="inputtext">
  </th>
</tr>
<tr>
  <th>
Password:
  </th>
  <th>
<input type="password" name="password" class="inputtext">
  </th>
</tr>
<tr>
  <th colspan="2" align="right">
<input type="submit" value="Login" class="formbutton">
</form>
  </th>
</tr>
</table>

</div>


<?
exit();
}
?>
Avatar billede yezbarh Nybegynder
16. februar 2006 - 22:53 #13
Hmmmmmmfg...!! prøv:

<?php
session_start();
include('../header.php');
require_once("../$lang_path/$lang_select");
?>

<div class="bluediv">

<?php
if($_SESSION[username] == "" || $_SESSION[password] == "") {
?>

<form action="" method="POST">
<p align="center">Members only. Please login to access this document.</p>
<table align="center" border="0">
<tr>
  <th>
Username:
  </th>
  <th>
<input type="text" name="username" class="inputtext">
  </th>
</tr>
<tr>
  <th>
Password:
  </th>
  <th>
<input type="password" name="password" class="inputtext">
  </th>
</tr>
<tr>
  <th colspan="2" align="right">
<input type="submit" value="Login" class="formbutton">
</form>
  </th>
</tr>
</table>
</div>



<?
exit();
}


$conn = mysql_connect($db_url, $db_user, $db_pass) or die(mysql_error());
mysql_select_db($db_name) or die(mysql_error());

$sql = mysql_query("SELECT `password` FROM edito_users WHERE username = '$_SESSION[username]'");
$fetch_em = mysql_fetch_array($sql) or die(mysql_error());
$numrows = mysql_num_rows($sql) or die(mysql_error());

if($numrows != 0 && $_SESSION["password"] == $fetch_em["password"]) {
$valid_user = 1;
}
else {
$valid_user = 0;
}


if (!($valid_user))
{
session_unset();
session_destroy();

?>

<form action="<?=$PHP_SELF?><?if($QUERY_STRING){ echo"?". $QUERY_STRING;}?>" method="POST">
<p align="center">Incorrect login information, please try again. You must login to access this document.</p>
<table align="center" border="0">
<tr>
  <th>
Username:
  </th>
  <th>
<input type="text" name="username" class="inputtext">
  </th>
</tr>
<tr>
  <th>
Password:
  </th>
  <th>
<input type="password" name="password" class="inputtext">
  </th>
</tr>
<tr>
  <th colspan="2" align="right">
<input type="submit" value="Login" class="formbutton">
</form>
  </th>
</tr>
</table>

</div>


<?
exit();
}
?>
Avatar billede erikjacobsen Ekspert
16. februar 2006 - 22:54 #14
Nej, ikke sådan. Læs om $_SESSION på http://php.net
Du skal fjerne linierne med session_register, og erstatte alle steder, der står $username med $_SESSION['username']
Avatar billede mrbs Nybegynder
16. februar 2006 - 23:06 #15
Jeg bliver nødt til at gå i seng, men tak for hjælpen i første omgang! Håber der er håb for mig :)

Mads
Avatar billede mrbs Nybegynder
20. februar 2006 - 13:28 #16
Hmmm... Har lavet et nyt selv, som virker :)
Ellers tak for hjælpen!
Avatar billede mrbs Nybegynder
20. februar 2006 - 13:28 #17
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