24. september 2006 - 19:59
Der er
45 kommentarer og 1 løsning
login problem
Hej eksperter...
Jeg har så mange problemer med mit login system så det halve bare kunne være nok...
Nå men det ser ud til at virke godt nok bortset fra at det ikke vil sende brugeren videre til den index side der skal bruges...
jeg får ikke nogen fejlmedelse så kan ikke give jer nogen info hvad det angår... i kan jo prøve at teste det på
http://www.joy-palaze.dk/test brugernavn: test
adgangskode: 1234
mer her kommer min do_login.php
<?php
session_start();
require('inc/data.php');
if(isset($_POST['login'])) {
$sql = mysql_query("SELECT id, navn, user, pass FROM bruger WHERE user = '$user' AND pass = '$pass'") or die(mysql_error());
if(mysql_num_rows($sql) == "1" ) {
while($row = mysql_fetch_array($sql)) {
$_SESSION['id'] = $row['id'];
$_SESSION['user'] = $row['user'];
$_SESSION['navn'] = $row['navn'];
mysql_query("INSERT INTO online SET id =". $_SESSION['id'] ." AND navn =". $_SESSION['navn'] ."") or die(mysql_error());
header("location:bruger/index.php");
}
} else {
header("location:login.php");
}
}
?>
håber i kan fortælle mig hvad problemet er...
Annonceindlæg fra Bluecircle
24. september 2006 - 20:07
#1
Nu bruger du jo "GET" i formens metode - det da dumt? - så kan andre personer se hvad du har indtastet, men anyways - det var ikke det der blev spurgt om. Prøv følgende; <?php session_start(); include("inc/data.php"); if( isset ( $_POST["login"]) ) { $sql = mysql_query("SELECT `id`, `navn`, `user`, `pass` FROM `bruger` WHERE `user` = '" . $_GET['user'] . "' AND `pass` = '" . $_POST['pass'] . "'") or die( mysql_error() ); if( mysql_num_rows( $sql ) == 1 ) { $row = mysql_fetch_assoc($sql); $_SESSION["id"] = $row["id"]; $_SESSION["user"] = $row["user"]; $_SESSION["navn"] = $row["navn"]; mysql_query("INSERT INTO `online` SET `id` = '". $_SESSION['id'] ."' AND `navn` = '". $_SESSION['navn'] ."'") or die( mysql_error() ); header("Location: bruger/index.php"); } else { header("Location: login.php"); } } ?>
24. september 2006 - 20:09
#2
-- og måske ændre; if( isset ( $_POST["login"]) ) til if( isset ( $_GET["navn"]) && isset ( $_GET["pass"] ) )
24. september 2006 - 20:10
#3
der sker ikke noget... desværre
24. september 2006 - 20:13
#4
Nå - nu bruger du POST igen :-) Så skal du også lige rette $_GET til $_POST i stedet.
24. september 2006 - 20:13
#5
det har jeg rettet :)
24. september 2006 - 20:15
#6
Hvad går der galt? - får du nogle fejl? - hvornår går det galt? Beskriv lige hvad du gør, hvornår det sker, om du får fejl, o.lign - så vi bedre kan hjælpe dig med problemet
24. september 2006 - 20:18
#7
Jeg får ikke nogen fejl... det kan du se ved selv at prøve at logge på... med de info jeg gave i starten... Problemet er at der jo ikke kommer nogen fejl
24. september 2006 - 20:21
#8
Prøv lige <?php session_start(); include("inc/data.php"); if( !isset ( $_POST["navn"]) && !isset ( $_POST["pass"] ) ) { $sql = mysql_query("SELECT `id`, `navn`, `user`, `pass` FROM `bruger` WHERE `user` = '" . $_POST['user'] . "' AND `pass` = '" . $_POST['pass'] . "'") or die( mysql_error() ); if( mysql_num_rows( $sql ) == 1 ) { $row = mysql_fetch_assoc($sql); $_SESSION["id"] = $row["id"]; $_SESSION["user"] = $row["user"]; $_SESSION["navn"] = $row["navn"]; mysql_query("INSERT INTO `online` SET `id` = '". $_SESSION['id'] ."' AND `navn` = '". $_SESSION['navn'] ."'") or die( mysql_error() ); //header("Location: bruger/index.php"); echo "bliver fint kørt: " . $_SESSION['id'] . $_SESSION['user']; } else { echo "fejl.."; //header("Location: login.php"); } } ?> -- hvad siger den?
24. september 2006 - 20:23
#9
stadigvæk blank skærm... den skriver intet
24. september 2006 - 20:28
#10
Ret din form's action til <form action="do_login.php?sender=true" method="post" enctype="multipart/form-data"> Og sæt denne kode ind; <?php session_start(); include("inc/data.php"); if( !isset ( $_GET["sender"]) ) { $sql = mysql_query("SELECT `id`, `navn`, `user`, `pass` FROM `bruger` WHERE `user` = '" . $_POST['user'] . "' AND `pass` = '" . $_POST['pass'] . "'") or die( mysql_error() ); if( mysql_num_rows( $sql ) == 1 ) { $row = mysql_fetch_assoc( $sql ) ; $_SESSION["id"] = $row["id"]; $_SESSION["user"] = $row["user"]; $_SESSION["navn"] = $row["navn"]; mysql_query("INSERT INTO `online` SET `id` = '" . $_SESSION['id'] . "' AND `navn` = '" . $_SESSION['navn'] . "'") or die( mysql_error() ); //header("Location: bruger/index.php"); echo "bliver fint kørt: " . $_SESSION['id'] . $_SESSION['user']; } else { echo "fejl.."; //header("Location: login.php"); } } ?>
24. september 2006 - 20:34
#11
jeg ved ikke lige hvad der er galt. Men der er stadigvæk blank skærm
24. september 2006 - 20:35
#12
Øøøh.. hvorfor bruger du desuden også en enctype ??? Har du overvejet at fjerne det ? :) <form action="do_login.php?sender=true" method="post" enctype="multipart/form-data"> til <form action="do_login.php?sender=true" method="post">
24. september 2006 - 20:43
#13
Prøv lige ret til denne kode, og udskriv alt outputtet: <?php session_start(); include("inc/data.php"); echo "SIDEN KALDT! <br />"; if( !isset ( $_GET["sender"]) ) { echo "DEBUG #0 - TEST: Vi er inde <br >"; echo "Start debugger: <br />"; print_r($_POST); $sql = mysql_query("SELECT `id`, `navn`, `user`, `pass` FROM `bruger` WHERE `user` = '" . $_POST['user'] . "' AND `pass` = '" . $_POST['pass'] . "'") or die( mysql_error() ); echo "DEBUG #1 - SQL: " . $sql; echo "<br />"; echo "DEBUG #2 - antal: " . mysql_num_rows($sql); if( mysql_num_rows( $sql ) == 1 ) { $row = mysql_fetch_assoc( $sql ) ; $_SESSION["id"] = $row["id"]; $_SESSION["user"] = $row["user"]; $_SESSION["navn"] = $row["navn"]; echo "DEBUG #3 - SESSION NAVNE: <br />"; print_r($_SESSION); echo "<br />DEBUG #4: ROW NAVNE: <br />"; print_r($row); mysql_query("INSERT INTO `online` SET `id` = '" . $_SESSION['id'] . "' AND `navn` = '" . $_SESSION['navn'] . "'") or die( mysql_error() ); //header("Location: bruger/index.php"); echo "bliver fint kørt: " . $_SESSION['id'] . $_SESSION['user']; } else { echo "fejl.."; //header("Location: login.php"); } } ?>
24. september 2006 - 20:44
#14
Desuden - når jeg opretter en bruger og logger ind, kan jeg sagtens komme ind? Det må være forkert brugernavn og password så :-)
24. september 2006 - 20:49
#15
har lige fået den til at virke...
24. september 2006 - 20:51
#16
Nå - okay.. Hvad gjorde du så?
24. september 2006 - 21:01
#17
Jeg måtte lave en almindelig login side i stedet for at have min form som den var før...
24. september 2006 - 21:03
#18
men tilgengæld har jeg et problem med at den opretter bare et tomt felt i min online tabel. den skriver ikke id nummeret fra den bruger der logger på eller navnet.
24. september 2006 - 21:03
#19
Okay, så kan jeg ikke rigtigt se at min hjalp gav nogle kabale..
24. september 2006 - 21:03
#20
jo din hjælp gav meget....
24. september 2006 - 21:03
#21
Se om din database, har udfyldt 'id' rigtigt. Om den overhovedet indeholder noget
24. september 2006 - 21:06
#22
den opretter en tom række hvor der står id 0 navn det er tomt
24. september 2006 - 21:06
#23
Så tillader jeg mig, at smide et svar
24. september 2006 - 21:07
#24
Prøv lige export din 'user' tabel. Jeg tror du har lavet lidt fejl i din id-kolonne
24. september 2006 - 21:08
#25
hvordan export?
24. september 2006 - 21:08
#26
CREATE TABLE `bruger` ( `id` bigint(20) NOT NULL auto_increment, `user` varchar(25) NOT NULL default '', `pass` varchar(25) NOT NULL default '', `navn` varchar(50) NOT NULL default '', `mail` varchar(100) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=4 ;
24. september 2006 - 21:09
#27
I PhpMyAdmin, ved menuerne; StrukturStruktur SQL Eksport Søg Foresp. via eks. Operationer SletSlet Tryk Eksport og vælg din user tabel
24. september 2006 - 21:10
#28
Er du sikker på, at du har sat id til auto_increment? /y
24. september 2006 - 21:10
#29
Kan du finde ud af at rette de forskellige kolonner, ellers slet din tabel, og indsæt den nye i SQL-menuen: CREATE TABLE `bruger` ( `id` int(11) NOT NULL auto_increment, `user` varchar(25) NOT NULL default '', `pass` varchar(25) NOT NULL default '', `navn` varchar(50) NOT NULL default '', `mail` varchar(100) NOT NULL default '', UNIQUE KEY `id` (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 ;
24. september 2006 - 21:12
#30
så er den blevet rettet
24. september 2006 - 21:13
#31
Så opret dine nye brugere igen - så skulle det gerne fungere igen :-)
24. september 2006 - 21:16
#32
den skriver stadigvæk ikke noget i min online tabel andet end en tom række
24. september 2006 - 21:20
#33
kan der ikke være en fejl i denne line mysql_query("INSERT INTO `online` SET `id` = '". $row['id'] ."' AND `navn` = '". $row['navn'] ."'") or die( mysql_error() );
24. september 2006 - 21:21
#34
Ups.. min fejl endnu engang.. Det fordi du indsætter til 'id' Lav et ekstra felt i online-databasen, og indsæt 'fid' istedet for id, og brug følgende; mysql_query("INSERT INTO `online` (`fid`, `navn`) VALUES ('" . $_SESSION['id'] . "','" . $_SESSION['navn'] . "')") or die( mysql_error() ); -- id bruges jo normalt til at udtrække id'et på kolonnerne ud på. Desuden havde du en
24. september 2006 - 21:21
#35
Cut lige "Desuden havde du en" Der skulle stå; Desuden brugte du en UPDATE-syntax til en INSERT INTO syntax.
24. september 2006 - 21:22
#36
fid skal den være varchar eller int?
24. september 2006 - 21:23
#37
int(11), og den skal _IKKE_ være "auto_increment"!
24. september 2006 - 21:23
#38
ok
24. september 2006 - 21:24
#39
`fid` int(11) NOT NULL default '0',
24. september 2006 - 21:27
#40
kan man lave en logud side sådan her? <?php session_start(); include("inc/data.php"); $sql = mysql_query("DELETE FROM online WHERE navn =". $_SESSION['navn'] ." AND fid=". $_SESSION['id'] .""); session_destroy(); header("location:index.php"); ?>
24. september 2006 - 21:28
#41
Sagtens!
24. september 2006 - 21:28
#42
Der bliver konsekvent testet på !isset($var), altså om den IKKE er sat, hvilket er forkert. <?php session_start(); include("inc/data.php"); if( !isset ( $_GET["sender"]) ) { if( mysql_num_rows( $sql ) == 1 ) { echo "bliver fint kørt: " . $_SESSION['id'] . $_SESSION['user']; } else { echo "fejl.."; } } ?> Som det kan ses, hvis først if sætning er falsk, vil der ingenting ske, derfor blank skærm. Envidere var hans SQL rigtig med primær nøgle, så igen grund til at lave den til unik nøgle i stedet.
24. september 2006 - 21:29
#43
Men det kan du vel selv afprøve - det jo også et spørgsmål for sig selv :-) Held og lykke med det, og tak for points :)
24. september 2006 - 21:30
#44
Men den vil ikke slette fra min online tabel :(
24. september 2006 - 21:32
#45
Du mangler ' rundt om navn, ellers vil den tro det er: WHERE navn = peter alfen man bruger normalt ikke ' rundt om tal ( integer ), for det bliver jo; WHERE fid = 1 og derfor ingen mellemrum, som mysql tror kommer til at blive noget helt andet Prøv: <?php session_start(); include("inc/data.php"); mysql_query("DELETE FROM `online` WHERE `navn` ='". $_SESSION['navn'] ."' AND `fid`=". $_SESSION['id'] .""); session_destroy(); header("location:index.php"); ?>
24. september 2006 - 21:39
#46
tak min ven nu virker det
Vi tilbyder markedets bedste kurser inden for webudvikling