login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Echo doet het niet.

Offline Scythen - 10/05/2007 19:55
Avatar van ScythenPHP gevorderde Beste mensen,

ik heb dit stukje script:
  1. if(isset($_POST['submit'])){
  2.  
  3. $username=$_POST['username'];
  4. $password=$_POST['password'];
  5.  
  6.  
  7. $query = mysql_query("SELECT * FROM login WHERE username ='$username' AND password = '$password'");
  8. $result = mysql_num_rows($query);
  9. while($object = mysql_fetch_object($query)){
  10.  
  11.  
  12. if($username == NULL || $password == NULL){
  13.  
  14. echo "<strong>* Please fill in all fields!</strong>";
  15. }


Maar hij echo'ot die please fill in all fields ongeveer 43x, de hele tijd achter elkaar zoiets: Please fill in all fields!Please fill in all fields!Please fill in all fields!Please fill in all fields!

Waar ligt dit aan? Bvd

10 antwoorden

Gesponsorde links
Offline Ultimatum - 10/05/2007 19:59
Avatar van Ultimatum PHP expert je controle is niet goed. Eerst doe je een query en haal je gegevens op aan de hand vande ingevulde waardes en dan pas ga je kijken of de waardes ook echt zijn ingevuld. Ik denk dat je het even andersom moet doen. En hij echoéd het nu 43x omdat het in een while loop staat..
Offline Abbas - 10/05/2007 20:01
Avatar van Abbas Gouden medaille

Crew .NET
Moet je ook niet '" . $username . "' gebruiken ipv '$username' (ook voor paswoord) ?
Offline delta_004 - 10/05/2007 20:01
Avatar van delta_004 Onbekend Ja dan komt omdat je account dan dat acc 43 in db hebt!
Offline Nrzonline - 10/05/2007 20:36 (laatste wijziging 11/05/2007 12:40)
Avatar van Nrzonline PHP ver gevorderde
  1. <?PHP
  2.  
  3. // Controleren of er op de knop is gedrukt.
  4. if (isset ($_POST['submit']))
  5. {
  6. // Controleren of de username- en passwordvelden zijn ingevuld.
  7. if (empty ($_POST['username']) || empty ($_POST['password']))
  8. {
  9. echo "<strong>* Please fill in all fields!</strong>";
  10. }
  11. // Beide velden zijn ingevuld, dus we gaan verder..
  12. else
  13. {
  14. # De ingevulde username en password in variabelen zetten.
  15. # Zal ie wel (of misschien ook wel niet) een goede reden voor hebben.
  16. $sUsername = $_POST['username'];
  17. $sPassword = $_POST['password'];
  18.  
  19. $sQuery = "SELECT *
  20. FROM login
  21. WHERE username = '" . $sUsername . "'
  22. AND password = '" . $sPassword . "'");
  23. $qSelLogin = mysql_query ($sQuery) or die ("QUERY: " . $sQuery . "<br />MYSQL ERROR: " . mysql_error ());
  24. $iLoginRows = mysql_num_rows($sQuery);
  25. while ($obLogin = mysql_fetch_object($qSelLogin)) # (obNaam staat voor objectNaam (zo doe ik het iig altijd ;)))
  26. {
  27. // Hetgene wat je met de WHILE wilt doen.
  28. }
  29. }
  30. }
  31.  
  32. ?>


Zo zou ie moeten werken.. 

Null zou ik niet gebuiken.. En ik twijfel zelfs of het überhaupt mogelijk is om die te kunnen gebruiken op die manier. Ik heb het nog nooit gezien, en ik raad het dus sowiezo AF. Gebruik om te controleren of een veld wel of niet is ingevuld de functie "empty". Ook heb ik je script even wat netter gemaakt/logischere volgorde gezet.
Offline Ibrahim - 11/05/2007 07:37
Avatar van Ibrahim PHP expert @nrzonline:

$sQuery ?
mysql_query returned een bool of een resource, en s staat voor string 

Een while loop?
volgens mij is er altijd maar 1 resultaat

De ingevulde username en password in variabelen zetten.?
Je kunt gewoon $_POST gebruiken hoor en beveiligen helpt ook wel 

if (!isset ($_POST['username']) etc.
Ik dacht dat alle velden verstuurd werden, het is dus slim om te kijken of ze leeg zijn ipv te kijken of ze bestaan. Want ze zullen altijd bestaan 
sidenote, isset gebruik je dan weer wel bij checkboxen

if( isset( $_POST['submit'] ) )
gebruik van $_SERVER['REQUEST_METHOD'] == 'POST' is aangeraden. Zo ben je niet afhankelijk van de naam van je submit button, maar kun je de formulier ook verwerken als iemand op de enter knop heeft gedrukt
Offline Nrzonline - 11/05/2007 12:29 (laatste wijziging 11/05/2007 12:47)
Avatar van Nrzonline PHP ver gevorderde Ja dat sQuery komt door een gewoonte van mij, namelijk
$sQuery = "SELECT bla FRM bla";
$qSelUsername = mysql_query ($sQuery) or die (mysql_error ());
Ik gebruik $qSel voor ->Query:SELECT, voor m'n eigen duidelijkheid en me query error class. Niet iedereen gebruikt dat hetzelfde.

En ipv isset bedoel ik natuurlijk empty-command, zoals ik onderin mijn post al had verteld, echter niet in het script had toegepast . (Zal ik even veranderen.. Ja, ook ik maak fouten Siliecom )

isset($_POST['naam']) of $_SERVER['REQUEST_METHOD'] == 'POST' is een kwestie van wat je wilt.

Het beveiligen van de input is zijn eigen pakkie an'

Een while loop altijd maar één resultaat?
Hmz.. Als ik bijvoorbeeld het volgende heb:

  1. <?PHP
  2.  
  3. $sQuery = "SELECT categorie_id,
  4. categorie_naam
  5. FROM sub_cats";
  6. $qSelCategorie = mysql_query ($sQuery) or die (mysql_error ());
  7. while ($asCategorie = mysql_fetch_assoc ($asCategorie))
  8. {
  9. echo $asCategorie['categorie_id'] . " - " . $asCategorie['categorie_naam'] . "<br />";
  10. }
  11.  
  12. ?>

Wordt de while toch echt tussen de accolades per row herhaald/gelooped?
Offline Ibrahim - 11/05/2007 12:42
Avatar van Ibrahim PHP expert
Citaat:
(Zal ik even veranderen.. Ja, ook ik maak fouten Siliecom )


jij? fouten ? echt niet 

Citaat:
isset($_POST['naam']) of $_SERVER['REQUEST_METHOD'] == 'POST' is een kwestie van wat je wilt.


ja, maar wil je nou werkelijk afhankelijk worden van een submitbutton naam ? Zit je uren te zoeken naar je probleem, is het de naam 
Offline Nrzonline - 11/05/2007 12:49 (laatste wijziging 11/05/2007 12:55)
Avatar van Nrzonline PHP ver gevorderde Ik maak nooit fouten, dat zou ik niet durven .

Maar even een vraagje tussendoor dan, want daar heb ik nu wat twijfels over.
Wat als ik 2 of meer formulieren heb op m'n website? Hoe zou die $_SERVER['REQUEST_METHOD'] tewerk gaan? De form submitten waar de zich het laatst een actie heeft voorgedaan (in één van de input velden?) of..?
Offline Ibrahim - 11/05/2007 13:37
Avatar van Ibrahim PHP expert denk het wel, probeer het eens 
Offline Thomas - 11/05/2007 13:42
Avatar van Thomas Moderator password = reserved -> backticks eromheen.

En ik vermoed dat er idd het eea dubbel in de database staat (geen controle op unieke nick?).
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.223s