Gebeurt niks

Status
Niet open voor verdere reacties.

arjan1202

Gebruiker
Lid geworden
29 okt 2003
Berichten
45
Ik heb een login script gemaakt maar als ik naar me login.php ga gebeurt er niks.
Dit is de code

Code:
<?php
	session_start();
?>
<html>
<head>
<title>Login</title>
</head>
<body>
<form method="post" action="login,php">
<input type="hidden" name="Submit" value="1">
<input type="text" name="LoginNaam">
<input type="password" name="LoginPassword">
<input type="submit" value="Login">
</form>

<?php

if ($Submit) {
	
	$DBHost = "localhost";
		$DBLogin = "root";
	$DBPassword = "";
		$DBDatabase = "test";
	
	mysql_connect("$DBHost", "$DBLogin", "$DBPassword");
		@mysql_select_db("$DBDatabase");
		
	$LoginNaam = addslashes($LoginNaam);
		$LoginPassword = addslashes($LoginPassword);
		
$Query = mysql)query("SELECT * FROM gebruikers WHERE gebruikersnaam = '$LoginNaam' AND password = '$LoginPassword'");
	$Results = mysql_num_rows($Query);
	
		if	($Results == '1') {
			$Login = "1";
		session_register("Login");
			
			echo "Je bent ingelogd. Klik <a href=\"vervolg.php\">hier</a> om verder te gaan.\n";
		
		}
		else {
		
		echo " Je gebruikersnaam of password klopt niet.\n";
		
		}
		
}
?>
</body>
</html>
 
Wederom zo'n ontzettend slordig script :(.
Probeer het zo eens:
PHP:
<?php
session_start();
?>
<html>
<head>
<title>Login</title>
</head>
<body>
<form method="post" action="login,php">
<input type="text" name="LoginNaam">
<input type="password" name="LoginPassword">
<input type="submit" value="Login">
</form>

<?php

if((isset($_POST["LoginNaam"]) == TRUE) AND (isset($_POST["LoginPassword"]) == TRUE))
{
$DBHost = "localhost";
$DBLogin = "root";
$DBPassword = "";
$DBDatabase = "test";
@mysql_connect($DBHost,$DBLogin,$DBPassword) or die("Kon geen verbinding maken met de MySQL server: " . mysql_error());
@mysql_select_db("$DBDatabase") or die("Kon database niet selecteren: " . mysql_error());
$LoginNaam = addslashes($_POST["LoginNaam"]);
$LoginPassword = addslashes($_POST["LoginPassword"]);
		
$Query = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '" . $LoginNaam . "' AND password = '" . $LoginPassword . "'") or die("Kon query niet uitvoeren: " . mysql_error()); // mysql)query ? mysql_query :P
  if(mysql_num_rows($Query) == 0)
  {
  echo " Je gebruikersnaam of password klopt niet.\n";
  }
  else
  {
  $_SESSION["Login"] = 1;
  echo "Je bent ingelogd. Klik <a href=\"vervolg.php\">hier</a> om verder te gaan.\n";
  }
}
?>
</body>
</html>
Overigens geeft dat $_SESSION["Login"] wel een beveiligingsrisico met zich mee, aangezien iedereen dan een sessie met de naam 'Login' kan aanmaken met -een- waarde ...
Wat je beter kan doen is de gebruikersnaam & wachtwoord opslaan in sessies en op elke pagina controleren of deze sessies bestaan. Zo ja, controleren of er in de database waarden overeen komen met de waarden van de sessies.
Maar dat mag je zelf weten natuurlijk ;)

Succes :thumb:
 
Ja hallo, jij bent neem ik aan ook begonnen en zo begin ik ook.

En dit script heb ik van artikel van phpfreakz.nl
Dus vind het dan slecht van ze.

Ieder geval bedankt, maar wat is nou precies de fout.
Want wil graag php leren.

Maar als ik dit van phpfreakz artikel heb en jij zegt het is slordig, is php freakz niet zo goed als ik dacht.

Bedankt.

Greetz
 
Geplaatst door arjan1202
Ja hallo, jij bent neem ik aan ook begonnen en zo begin ik ook.
Gelukkig niet :)...
Ik had een goeie leraar die me vanaf het begin al leerde hoe ik moest scripten ;). En na een paar maandjes ervaring is dit nog wat beter ontwikkeld en heb ik ook geleerd waarom ik zo moest scripten.
Maar, je hebt gelijk, als je net begint dan kun je inderdaad niet weten wat slordig is en wat niet, dan ga je er vanuit dat wat anderen goed is en neem je dat over. Helaas is het zo dat mensen bij phpfreakz enorm slordig scripten (of ik té netjes :o)...Echte nette scripters zijn zeer schaars tegenwoordig, zelfs php.net scripten slordig... Persoonlijk ben ik dan ook een aanhanger van een wat strictere PHP structuur, zoals geen variabelen met string combineren enzo ... Autoglobals & superglobals afschaffen (dat je van $HTTP_POST_VARS["blaat"] naar $_POST["blaat"] naar $blaat kan gaan... walgelijk ... Brengt ook veiligheidsrisico's met zich mee trouwens).
Ik ga binnenkort wel een handleiding schrijven over netjes scripten ;).
Maar goed, het is voor ieder een keus hoe hij/zij wil leren scripten.

Als voor de fout in jouw script, ik denk dat de grootste fout is 'mysql)query', dit moet 'mysql_query' zijn. De mysql_num_rows() die gebruikt wordt is niet alleen slordig, maar ook fout. Toen ik in mijn beginfase van PHP zat deed ik het ook zo en kreeg ik errors ... mysql_num_rows() geeft namelijk 0 terug wanneer er 0 rijen worden geteld. 0 is gelijk aan FALSE, en die FALSE roept een error op. Althans, in eerdere versies van PHP deed het dat wel. Daarom moet je eerst controleren of hij niet gelijk is aan 0.
PHP:
if(mysql_num_rows($Result) == 0)
Dit heb ik o.a. verbeterd in de code ;).
Verder was er een netheidprobleem met dat 'if($Submit)'...
Dit is dus dat auto / superglobals gedoe...
$HTTP_POST_VARS["Submit"] ==> $_POST["Submit"] ==> $Submit ...
Wat de maker van het script hier wil doen is controleren of er iets gepost is. Maar, stel je zou een nieuw formulier maken met alleen een tekstveld 'Submit', dit formulier stuur je bij posten door naar dit script, dit script ziet dat $Submit bestaat, en dan gaat hij alles verwerken ... Maar er zijn geen andere velden, dus zullen er hoogst waarschijnlijk errors komen.
Daarom heb ik het script verbeterd door te checken of de 2 tekstvelden, LoginNaam en LoginPassword, bestaan, zo ja, dan gaat het script verder. Anders niet.
Ook heb ik een aantal 'or die(mysql_error())' toegevoegd. Als een query niet werkt, zul je meteen een melding krijgen waarom hij niet werkt. Wel zo fijn tijdens het scripten ;).
Verder nog een paar slordigheidsfoutjes ... Vergelijk de 2 scripts maar, je merkt het verschil wel ;).

Ik kan me enigszins voorstellen dat je wellicht geen barst van dit verhaal snapt, daar kan ik dan weinig aan doen ... Als ik echt ontzettend duidelijk moet zijn, dan ben ik nog 2 uur bezig met typen ... :D
Als je 't wel snapt, fijn :thumb:

Als je nog vragen hebt, ik zal ze proberen in begrijpelijke taal te beantwoorden

Succes :thumb:
 
Nou ik doe ICT opleidin g en krijg php.

Maar die knakker legt eht zo snel en onduidelijk uit.
We hebben *** boeken.

Dus wil graag leren via tutorials en andere scripten.

Weet jij nog wat sites?
Of tips?

Graag

Bedankt.

Want wil graag is shoutbox maken voor me website.
Vandaar ik ook login probeer.
Gastenboek en dergelijke.
 
Enkele tips:
  • Hou een doel in gedachten: ik wilde een online spel namaken, daardoor bleef ik doorgaan met PHP ...
  • Test veel...kijk niet alleen, maar pruts & bewerk en kijk of je begrijpt wat er gedaan wordt en waarom, maar ook of je het zelf kan typen zonder te kijken hoe anderen het deden.
  • Als je een stuk lastige code krijgt, kijk dan rustig naar de code en probeer er dingen uit te halen die je kent zodat je de rest kan gissen in plaats van dat je in paniek raakt.
  • Test ...
  • Koop een goed boek, ikzelf heb wel een boek gekocht, helaas een slechte ... als je vanaf 0 start dan snap je er niet veel van ...
  • Download de PHP Handleiding vanaf de PHP site, zodat je alle functies op kan zoeken die je niet kent.

Tutorials ...
http://www.w3schools.com heeft goeie.
En in de toekomst heb ik er ook een paar op mijn site ... moet je nog ff geduld voor hebben ... Maandje of zo ...

Succes :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan