login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Php script invoegen in php script. (Opgelost)

Offline luchtpost - 24/11/2007 13:48 (laatste wijziging 24/11/2007 14:23)
Avatar van luchtpostPHP interesse Beste sitemasters,

Dit is de pagina login.php van een loginsysteem:

  1. <?php
  2. include('config.php');
  3. $_POST['username'] = addslashes($_POST['username']);
  4. $_POST['wachtwoord'] = md5($_POST['wachtwoord']);
  5. $sql = "SELECT ID FROM leden WHERE wachtwoord = '" . $_POST['wachtwoord'] ."' AND Name = '" . $_POST['username']. "' LIMIT 1";
  6. if(!($result = mysql_query($sql))) die(mysql_error());
  7.  
  8. $Rows = mysql_num_rows($result);
  9. if($Rows != 0) {
  10. echo "Ingelogd!";
  11. /* je kan hier ook meer codes instoppen zoals bijv. een cookie */
  12. } else {
  13. echo "Er klopt iets niet.";
  14. }
  15. ?>


Zou het mogelijk zijn ipv 'Ingelogd!' het volgende script te laten verschijnen?


  1. <?php if ($HTTP_POST_VARS['submit']) {
  2. mysql_connect("localhost","****","****");
  3. $entrytitle=$HTTP_POST_VARS['entrytitle'];
  4. $entrytext=$HTTP_POST_VARS['entrytext'];
  5. $query ="INSERT INTO tabel (entrytitle,entrytext)";
  6. $query.=" VALUES ('$entrytitle','$entrytext')";
  7. $result=mysql_query($query);
  8. if ($result) echo "Bericht verzonden!";
  9. else echo "Er klopt iets niet.";
  10. }
  11. ?>
  12. <form method="post" action="schrijven.php"><input
  13. name="entrytitle" type="text" /><br />
  14. <textarea cols="63" rows="12" name="entrytext"></textarea><br />
  15. <input name="submit" value="Verzenden" type="submit" /></form>

16 antwoorden

Gesponsorde links
Offline Wim - 24/11/2007 13:49 (laatste wijziging 06/12/2007 16:29)
Avatar van Wim Crew algemeen het volgende script.... welk script?

Trouwens, je moet gewoon lijn 10 weglaten, en daar je andere code zetten, tussen de { en } van je if op lijn 9

//edit:
  1. <?php
  2. include('config.php');
  3. $_POST['username'] = addslashes($_POST['username']);
  4. $_POST['wachtwoord'] = md5($_POST['wachtwoord']);
  5. $sql = "SELECT ID FROM leden WHERE wachtwoord = '" . $_POST['wachtwoord'] ."' AND Name = '" . $_POST['username']. "' LIMIT 1";
  6. if(!($result = mysql_query($sql))) die(mysql_error());
  7.  
  8. $Rows = mysql_num_rows($result);
  9. if($Rows != 0) {
  10.  
  11.  
  12.  
  13. if ($HTTP_POST_VARS['submit']) {
  14. mysql_connect("localhost","","");
  15. $entrytitle=$HTTP_POST_VARS['entrytitle'];
  16. $entrytext=$HTTP_POST_VARS['entrytext'];
  17. $query ="INSERT INTO tabel (entrytitle,entrytext)";
  18. $query.=" VALUES ('$entrytitle','$entrytext')";
  19. $result=mysql_query($query);
  20. if ($result) echo "Bericht verzonden!";
  21. else echo "Er klopt iets niet.";
  22. }
  23. ?>
  24. <form method="post" action="schrijven.php"><input
  25. name="entrytitle" type="text" /><br />
  26. <textarea cols="63" rows="12" name="entrytext"></textarea><br />
  27. <input name="submit" value="Verzenden" type="submit" /></form>
  28. <?php
  29.  
  30.  
  31. /* je kan hier ook meer codes instoppen zoals bijv. een cookie */
  32. } else {
  33. echo "Er klopt iets niet.";
  34. }
  35. ?>
Offline tomie94 - 24/11/2007 13:58 (laatste wijziging 24/11/2007 13:59)
Avatar van tomie94 PHP interesse
  1. <?php
  2. include('config.php');
  3. $_POST['username'] = addslashes($_POST['username']); $
  4. _POST['wachtwoord'] = md5($_POST['wachtwoord']);
  5. $sql = "SELECT ID FROM leden WHERE wachtwoord = '" . $_POST['wachtwoord'] ."' AND Name = '" . $_POST['username']. "' LIMIT 1";
  6. if(!($result = mysql_query($sql))) die(mysql_error());
  7. $Rows = mysql_num_rows($result); i
  8. f($Rows != 0)
  9. {
  10. if ($HTTP_POST_VARS['submit'])
  11. {
  12. //Mysql connect hoeft niet omdat dat al in config.php staat
  13. $entrytitle=$HTTP_POST_VARS['entrytitle'];
  14. $entrytext=$HTTP_POST_VARS['entrytext'];
  15. $query ="INSERT INTO tabel (entrytitle,entrytext)";$query.=" VALUES ('$entrytitle','$entrytext')";$result=mysql_query($query);
  16. if ($result)
  17. "Bericht verzonden!";
  18. else
  19. "Er klopt iets niet.";
  20. }
  21. ?><form method="post" action="schrijven.php"><input name="entrytitle" type="text" /><br /> <textarea cols="63" rows="12" name="entrytext"></textarea><br /> <input name="submit" value="Verzenden" type="submit" /></form>
  22. <?php
  23. } else
  24. {
  25.  
  26. "Er klopt iets niet.";
  27. }
  28. ?>
Offline Koen - 24/11/2007 14:20
Avatar van Koen PHP expert $HTTP_POST_VARS is verouderd gebruik gewoon $_POST.
Offline luchtpost - 24/11/2007 14:48 (laatste wijziging 25/11/2007 13:05)
Avatar van luchtpost PHP interesse Ja maar het betreft hier een klein weblogsysteempje en deze code...

  1. <?php if ($HTTP_POST_VARS['submit']) {
  2. mysql_connect("localhost","****","****");
  3. $entrytitle=$HTTP_POST_VARS['entrytitle'];
  4. $entrytext=$HTTP_POST_VARS['entrytext'];
  5. $query ="INSERT INTO tabel (entrytitle,entrytext)";
  6. $query.=" VALUES ('$entrytitle','$entrytext')";
  7. $result=mysql_query($query);
  8. if ($result) echo "Bericht verzonden!";
  9. else echo "Er klopt iets niet.";
  10. }
  11. ?>
  12. <form method="post" action="schrijven.php"><input
  13. name="entrytitle" type="text" /><br />
  14. <textarea cols="63" rows="12" name="entrytext"></textarea><br />
  15. <input name="submit" value="Verzenden" type="submit" /></form>


...is het script waarbij je de berichten moet intypen die dan naar de database geschreven worden.

Het probleem is dat het script niet meer goed functioneert als het verwerkt is in het inlogsysteem.
Offline Koen - 24/11/2007 15:08
Avatar van Koen PHP expert Wat werkt er niet goed, en wat is het script dat je nu hebt?
Offline luchtpost - 24/11/2007 17:07 (laatste wijziging 24/11/2007 17:44)
Avatar van luchtpost PHP interesse Ik gebruik deze code (met dank aan wimmarien)

  1. <?php include('config.php');
  2. $_POST['username'] = addslashes($_POST['username']);
  3. $_POST['wachtwoord'] = md5($_POST['wachtwoord']);
  4. $sql = "SELECT ID FROM leden WHERE wachtwoord = '" . $_POST['wachtwoord'] ."' AND username = '" . $_POST['username']. "' LIMIT 1";
  5. if(!($result = mysql_query($sql))) die(mysql_error());
  6. $Rows = mysql_num_rows($result);
  7. if($Rows != 0) { if ($HTTP_POST_VARS['submit']) {
  8. mysql_connect("localhost","****","****");
  9. $entrytitle=$HTTP_POST_VARS['entrytitle'];
  10. $entrytext=$HTTP_POST_VARS['entrytext'];
  11. $query ="INSERT INTO tabel (entrytitle,entrytext)";
  12. $query.=" VALUES ('$entrytitle','$entrytext')";
  13. $result=mysql_query($query);
  14. if ($result) echo "Bericht verzonden!";
  15. else echo "Er klopt iets niet. (weblog)";
  16. }
  17. ?>
  18. <form method="post" action="login.php"><input
  19. name="entrytitle" type="text" /><br />
  20. <textarea cols="63" rows="12" name="entrytext"></textarea><br />
  21. <input name="submit" value="Verzenden" type="submit" /></form>
  22. <?php /* je kan hier ook meer codes instoppen zoals bijv. een cookie */
  23. }
  24. else
  25. {
  26. echo "Er klopt iets niet. (login)";
  27. }
  28. ?>


Het eerste probleem is dat nadat ik ben ingelogd meteen de melding komt 'Bericht verzonden!' en er ook echt een (leeg) bericht naar de database wordt geschreven.

Tweede probleem is dat als ik dan na het inloggen een bericht wil verzenden hij deze foutmelding geeft: 'Er klopt iets niet. (login).


Offline Giant - 24/11/2007 20:17
Avatar van Giant PHP beginner heet de submit button van je login formulier toevallig ook submit?
zoja: hernoem de submit in je webshop script naar submit2 o.i.d
en dan ook de volgende regel:
  1. if ($HTTP_POST_VARS['submit'])
  2. //naar
  3. if ($_POST['submit2'])

zo zou het moeten werken, ook zoals titjes al zei:
gebruik i.p.v. $HTTP_POST_VARS gewoon $_POST.
Offline luchtpost - 24/11/2007 20:47 (laatste wijziging 24/11/2007 20:51)
Avatar van luchtpost PHP interesse Ik heb ergens een veel eenvoudiger (en waarschijnlijk ook een beetje onveiliger) script gevonden. Het ziet er als volgt uit:

  1. <?php // Define your username and password
  2. $username = "test";
  3. $password = "test";
  4. if ($_POST['txtUsername'] != $username || $_POST['txtPassword'] != $password) {
  5. ?>
  6. <form name="form" method="post"
  7. action="<?php echo $_SERVER['PHP_SELF']; ?>">
  8. <p><input title="Enter your Username"
  9. name="txtUsername" type="text" /></p>
  10. <p><input title="Enter your password"
  11. name="txtPassword" type="password" /></p>
  12. <p><input name="submit2" value="Login"
  13. type="submit" /></p>
  14. </form>
  15. <?php }
  16. else {
  17. ?>
  18. //dit is wat ge te zien krijgt als ge bent ingelogd (formulietje om bericht toe te voegen)
  19. <?php if ($_POST['submit']) {mysql_connect("localhost","****","****");
  20. $entrytitle=$_POST['entrytitle'];
  21. $entrytext=$_POST['entrytext'];
  22. $query ="INSERT INTO tabel (entrytitle,entrytext)";
  23. $query.=" VALUES ('$entrytitle','$entrytext')";
  24. $result=mysql_query($query);
  25. if ($result) echo "Bericht verzonden!";
  26. else echo "Er klopt iets niet.";
  27. }
  28. ?>
  29. <form method="post" action="schrijven.php"><input
  30. name="entrytitle" type="text" /><br />
  31. <textarea cols="63" rows="12" name="entrytext"></textarea><br />
  32. <input name="submit" value="Verzenden" type="submit" /></form>
  33. <?php }
  34. ?>


Nadat ik op dit script de tips van Giant en Titjes heb toegepast kreeg ik het volgende probleem: na het inloggen krijg ik dus succesvol het formuliertje om een bericht toe te voegen te zien. Nadat ik een bericht heb ingevoerd en ik op verzenden druk geeft hij ipv het verzenden van het bericht opnieuw het inlogformulier.

Volgens mij kunt ge dit oplossen door 'cookies' of 'sessions' te gebruiken om ingelogd te blijven maar ik kan er allemaal niet goed aan uit...
Offline Giant - 25/11/2007 09:52
Avatar van Giant PHP beginner
  1. f ($_POST['txtUsername'] != $username || $_POST['txtPassword'] != $password || !isset($_COOKIE['login'])) {
  2. ?>
  3. <form name="form" method="post"
  4. action="<?php echo $_SERVER['PHP_SELF']; ?>">
  5. <p><input title="Enter your Username"
  6. name="txtUsername" type="text" /></p>
  7. <p><input title="Enter your password"
  8. name="txtPassword" type="password" /></p>
  9. <p><input name="submit2" value="Login"
  10. type="submit" /></p>
  11. </form>
  12. <?php }
  13. else {
  14. if(!isset($_COOKIE['login'])){
  15. setcookie("login", "1", time()+365*24*60*60, "/"); // cookie blijft 1 jaar geldig
  16. setcookie("naam", $_POST['txtUsername'], time()+356*24*60*60, "/");
  17. setcookie("pass", md5($_POST['txtPassword']), time()+356*24*60*60, "/");
  18.  
  19. // setcookie("cookie_naam", "cookie_waarde", time()tijd dat cookie geldig blijft, "path van cookie");
  20. }
  21. // hier de rest van je code;)


lees voor meer informatie over path even deze
van zointer
Offline zointer - 25/11/2007 10:01
Avatar van zointer HTML gevorderde
Giant schreef:
[..code..]
lees voor meer informatie over path even deze
van zointer


Danke, maar is een tuto van FangorN 
Offline luchtpost - 25/11/2007 16:34 (laatste wijziging 27/11/2007 16:50)
Avatar van luchtpost PHP interesse Mmm, alvast bedankt Giant maar het werkt niet...
Die tut is nogal vaag over het uitlezen van de cookies...

Hiermee maak je dus de cookies aan:
  1. setcookie("login", "1", time()+365*24*60*60, "/"); // cookie blijft 1 jaar geldig
  2. setcookie("naam", $_POST['txtUsername'], time()+356*24*60*60, "/");
  3. setcookie("pass", md5($_POST['txtPassword']), time()+356*24*60*60, "/");


En hier mee lees je ze uit:
  1. if(!isset($_COOKIE['login'])){}


Maar hoe zorg ik er voor dat je ingelogd blijft?
Ik blijf namelijk het probleem behouden dat ik na het versturen van een weblogbericht opnieuw het inlogformuliertje te zien krijg en het bericht dus niet verzonden wordt.

Dit is mijn hele code:
  1. <?php $username = "test";
  2. $password = "test";
  3. if ($_POST['txtUsername'] != $username || $_POST['txtPassword'] != $password) {
  4. ?>
  5. <form name="form" method="post"
  6. action="<?php echo $_SERVER['PHP_SELF']; ?>">
  7. <p><input title="Enter your Username"
  8. name="txtUsername" type="text" /></p>
  9. <p><input title="Enter your password"
  10. name="txtPassword" type="password" /></p>
  11. <p><input name="submit2" value="Login"
  12. type="submit" /></p>
  13. </form>
  14. <?php }
  15. else {
  16. if(!isset($_COOKIE['login'])){setcookie("login", "1", time()+365*24*60*60, "/"); // cookie blijft 1 jaar geldig
  17. setcookie("naam", $_POST['txtUsername'], time()+356*24*60*60, "/"); setcookie("pass", md5($_POST['txtPassword']), time()+356*24*60*60, "/");
  18. }
  19. ?>
  20. <?php if ($_POST['submit']) {mysql_connect("localhost","****","****");
  21. $entrytitle=$_POST['entrytitle'];
  22. $entrytext=$_POST['entrytext'];
  23. $query ="INSERT INTO tabel (entrytitle,entrytext)";
  24. $query.=" VALUES ('$entrytitle','$entrytext')";
  25. $result=mysql_query($query);
  26. if ($result) echo "Bericht verzonden!";
  27. else echo "Er klopt iets niet.";
  28. }
  29. ?>
  30. <form method="post" action="schrijven.php"><input
  31. name="entrytitle" type="text" /><br />
  32. <textarea cols="63" rows="12" name="entrytext"></textarea><br />
  33. <input name="submit" value="Verzenden" type="submit" /></form>
  34. <?php }
  35. ?>

Offline Giant - 25/11/2007 17:28 (laatste wijziging 25/11/2007 17:58)
Avatar van Giant PHP beginner bovenaan bij regel 3 nog even || !isset($_COOKIE['login']) toevoegen,
en !isset houd in als hij niet bestaat en de reden waarom je nou steeds je inlog formulier terugvind is: zodra je die andere pagina verzend d.m.v. submit gaan de post gegevens van je login formulier verloren en moet je deze dus opnieuw versturen door je regel 3;) daar staat namenlijk: als username en password niet overeenkomen met txtusername en txtpassword laat het formulier zien, en aangezien txt username en txtpassword in een post staan en die post verloren gaat is komen ze niet meer overeen 
(ik hoop dat je het nog een beetje begrijpt):)

edit:
zeg maar gewoon je hoor:$ ben nog veel te jong voor u:P
Offline luchtpost - 25/11/2007 19:00
Avatar van luchtpost PHP interesse Kan je even een voorbeeld geven want bij mij werkt het niet...
Nu kan ik me helemaal niet meer inloggen...
Offline Giant - 25/11/2007 19:38
Avatar van Giant PHP beginner maak van regel 3 eens dit:
  1. if ($_POST['txtUsername'] != $username && !isset($_COOKIE['login']) || $_POST['txtPassword'] != $password && !isset($_COOKIE['login'])) {

dan zou hij moeten werken 
net even zelf getest;-)
Offline luchtpost - 26/11/2007 17:01
Avatar van luchtpost PHP interesse Dankjewel iedereen! Het werkt allemaal zeer goed! Ik was vergeten ob_start() helemaal bovenaan de pagina te zetten.
Offline Giant - 26/11/2007 17:02
Avatar van Giant PHP beginner klik ook even op opgelost dan:P
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.306s