Avatar billede plazm Nybegynder
04. oktober 2003 - 00:11 Der er 27 kommentarer og
1 løsning

Simpelt PHP Login med MySQL

Jeg vil gerne have et login script. det skal kun være den del der tjekker. altså koden. og den skal bruge denne form til at tjekke:


<form method="POST" action="login_tjek.php">
  <input type="hidden" name="Login" value="yes">
  <p align="center"><input type="text" name="Username" size="20"><br>
  <input type="Password" name="Password" size="20"><br>
  <input type="submit" value="Submit" name="B1"></p>
</form>
<?php
if(isset($_SESSION['fail'])) {
echo"Username or password not found";
unset($_SESSION['fail']);
}

?>

som i nok kan se skal den sætte SESSION['fail'] hvis er ikke kan logges ind.

Der ud over skal den sætte session['adminlevel'] ud fra kolonnen "admin" <- et tal og session['logged'] til 1

Håber i forstod det :)
Avatar billede swaxi Nybegynder
04. oktober 2003 - 14:49 #1
if (isset($_POST['Username']) && isset($_POST['Password'])) {
    $q = "SELECT COUNT(*) AS `count` FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."' AND `Password`='".addslashes($_POST['Password'])."'";
    $r = mysql_query($q) or die(mysql_error());
    $row = mysql_fetch_row($r) or die(mysql_error());
    if ($row['count'] == 1) {
        $_SESSION['logged'] = 1;
        $q = "SELECT * FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."'";
        $row = mysql_fetch_row($r) or die(mysql_error());
        $_SESSION['Username'] = $row['Username'];
        $_SESSION['adminlevel'] = $row['admin'];
    } else {
        $_SESSION['fail'] = true;
    }
}
Avatar billede plazm Nybegynder
04. oktober 2003 - 15:33 #2
<?php
  if (isset($_POST['Username']) && isset($_POST['Password'])) {
    $conn = mysql_connect("localhost", "navn", "kode") or die (mysql_error());
    mysql_select_db("db");
    $q = "SELECT COUNT(*) AS `count` FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."' AND `Password`='".addslashes($_POST['Password'])."'";
    $r = mysql_query($q) or die(mysql_error());
    $row = mysql_fetch_row($r) or die(mysql_error());
    if ($row['count'] == 1) {
        $_SESSION['logged'] = 1;
        $q = "SELECT * FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."'";
        $row = mysql_fetch_row($r) or die(mysql_error());
        $_SESSION['Username'] = $row['Username'];
        $_SESSION['adminlevel'] = $row['admin'];
echo 'Hej';
    } else {
        $_SESSION['fail'] = true;
echo 'fejl';
    }
  }
?>

jeg har sat de navne ind der skal bruges. caps er tjekket, de passer ok, men jeg får echo 'fejl' hver gang. Password og Bruger er 100 % rigtigt.. hvor er fejlen
Avatar billede plazm Nybegynder
04. oktober 2003 - 16:40 #3
andre der kan lave fejlen ?
Avatar billede swaxi Nybegynder
04. oktober 2003 - 16:45 #4
smid en session_start(); som første linie i dine scripts
Avatar billede plazm Nybegynder
04. oktober 2003 - 17:09 #5
<?php
session_start();
  if (isset($_POST['Username']) && isset($_POST['Password'])) {
    $conn = mysql_connect("localhost", "navn", "kode") or die (mysql_error());
    mysql_select_db("db");
    $q = "SELECT COUNT(*) AS `count` FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."' AND `Password`='".addslashes($_POST['Password'])."'";
    $r = mysql_query($q) or die(mysql_error());
    $row = mysql_fetch_row($r) or die(mysql_error());
    if ($row['count'] == 1) {
        $_SESSION['logged'] = 1;
        $q = "SELECT * FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."'";
        $row = mysql_fetch_row($r) or die(mysql_error());
        $_SESSION['Username'] = $row['Username'];
        $_SESSION['adminlevel'] = $row['admin'];
echo 'Hej';
    } else {
        $_SESSION['fail'] = true;
echo 'fejl';
    }
  }
?>

den melder stadig fejl.
Avatar billede swaxi Nybegynder
05. oktober 2003 - 11:46 #6
prøv at vis hele dit script
Avatar billede plazm Nybegynder
05. oktober 2003 - 13:02 #7
det er det hele... :)
Avatar billede swaxi Nybegynder
05. oktober 2003 - 13:44 #8
samlet
Avatar billede swaxi Nybegynder
05. oktober 2003 - 13:45 #9
... jeg går ud fra at du _har_ oprettet en tabel "users", med felterne "Username", "Password", "admin" - og oprettet en række heri ?
Avatar billede plazm Nybegynder
05. oktober 2003 - 13:48 #10
self har jeg det, og caps, stavning osv er tjekket
Avatar billede plazm Nybegynder
05. oktober 2003 - 13:51 #11
har du msn, da det ville være nemmere at fejlfinde på den måde :)
Avatar billede swaxi Nybegynder
05. oktober 2003 - 13:53 #12
hvad for en version af php bruger du ?
... hvis det er en ældre version, kan det være at du skal erstatte $_POST med $HTTP_SERVER_VARS osv.
Avatar billede plazm Nybegynder
05. oktober 2003 - 13:55 #13
Jeg kan ikk huske hvilken php vers jeg bruger, men jeg er hosted af 1go.
Hmm.. altså bliver $_POST['Password'] til $HTTP_SERVER_VARS['Password'] ???
Avatar billede swaxi Nybegynder
05. oktober 2003 - 14:23 #14
eh undskyld - til $_POST bliver til $HTTP_POST_VARS

men jeg ved ikke om det er det, der går galt - jeg gætter bare

prøv lige at smid hele dit script samlet, som det ser ud nu
Avatar billede plazm Nybegynder
05. oktober 2003 - 14:31 #15
login.php:
<form method="POST" action="login_tjek.php">
  <input type="hidden" name="Login" value="yes">
  <p align="center"><input type="text" name="Username" size="20"><br>
  <input type="Password" name="Password" size="20"><br>
  <input type="submit" value="Submit" name="B1"></p>
</form>
<?php

if(isset($_SESSION['Username_fail'])) {
echo"Username not found";
unset($_SESSION['Username_fail']);
}

?>

Logintjek.php:

<?php
session_start();
  if (isset($_POST['Username']) && isset($_POST['Password'])) {
    $conn = mysql_connect("localhost", "navn", "kode") or die (mysql_error());
    mysql_select_db("db");
    $q = "SELECT COUNT(*) AS `count` FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."' AND `Password`='".addslashes($_POST['Password'])."'";
    $r = mysql_query($q) or die(mysql_error());
    $row = mysql_fetch_row($r) or die(mysql_error());
    if ($row['count'] == 1) {
        $_SESSION['logged'] = 1;
        $q = "SELECT * FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."'";
        $row = mysql_fetch_row($r) or die(mysql_error());
        $_SESSION['Username'] = $row['Username'];
        $_SESSION['adminlevel'] = $row['admin'];
echo 'Hej';
    } else {
        $_SESSION['fail'] = true;
echo 'fejl';
    }
  }
?>
Avatar billede swaxi Nybegynder
05. oktober 2003 - 14:39 #16
for det første skal du starte session på alle dine sider - så login.php skal begynde med <?php session_start(); ?>

for det andet - prøv at sætte dette ind i Logintjek.php, efter echo 'fejl';
echo "<pre>";var_dump(array($_POST, $_GET, $_SESSION));
Avatar billede plazm Nybegynder
05. oktober 2003 - 14:41 #17
jeg havde <?php session_start(); ?> på login.php :) prøver lige det andet.
Avatar billede plazm Nybegynder
05. oktober 2003 - 14:43 #18
array(3) {
  [0]=>
  array(4) {
    ["Login"]=>
    string(3) "yes"
    ["Username"]=>
    string(5) "PlazM"
    ["Password"]=>
    string(7) "koden er rigtig :)"
    ["B1"]=>
    string(6) "Submit"
  }
  [1]=>
  array(0) {
  }
  [2]=>
  array(1) {
    ["fail"]=>
    bool(true)
  }
}
Avatar billede swaxi Nybegynder
05. oktober 2003 - 14:50 #19
prøv at tilføje var_dump($row);
Avatar billede swaxi Nybegynder
05. oktober 2003 - 14:52 #20
i øvrigt ... lige efter :
    $q = "SELECT * FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."'";

mangler denne linie :
    $r = mysql_query($q) or die(mysql_error());
Avatar billede plazm Nybegynder
05. oktober 2003 - 14:53 #21
array(3) {
  [0]=>
  array(4) {
    ["Login"]=>
    string(3) "yes"
    ["Username"]=>
    string(5) "PlazM"
    ["Password"]=>
    string(7) "koden er rigtig :)"
    ["B1"]=>
    string(6) "Submit"
  }
  [1]=>
  array(0) {
  }
  [2]=>
  array(1) {
    ["fail"]=>
    bool(true)
  }
}
array(1) {
  [0]=>
  string(1) "1"
}
Avatar billede swaxi Nybegynder
05. oktober 2003 - 14:54 #22
aha ... erstat denne linie :
    if ($row['count'] == 1) {
med denne :
    if ($row[0] == 1) {
Avatar billede plazm Nybegynder
05. oktober 2003 - 14:58 #23
nu skriver den ikke fejl mere, MEN den skriver heller ikk hej
Avatar billede swaxi Nybegynder
05. oktober 2003 - 15:01 #24
erstat allersidste linie med :
} else { echo "fejl : data mangler"; }
Avatar billede plazm Nybegynder
05. oktober 2003 - 15:02 #25
stadig intet...
Avatar billede swaxi Nybegynder
05. oktober 2003 - 15:04 #26
det kan jo ikke passe ?!?
post din kode ...
Avatar billede plazm Nybegynder
05. oktober 2003 - 15:07 #27
jeg fandt fejlen :)
  if ($row['count'] == 1) {
        $_SESSION['logged'] = 1;
        $q = "SELECT * FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."'";
        $row = mysql_fetch_row($r) or die(mysql_error());

kan du se der mangler:
  $r = mysql_query($q) or die(mysql_error());

Tak for hjælpen :)
Avatar billede swaxi Nybegynder
05. oktober 2003 - 15:08 #28
velbekomme
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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