Page 1 of 2 12 Last

Thread: variable in url

  1. #1
    CrazyMonkeyz's Avatar
    Registered
    26/05/13
    Location
    Puurs
    Posts
    84
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0

    variable in url

    Ik zit met een registratiesysteem dat werkt via uitnodiging. Er wordt op moment van uitnodiging een code gegenereerd die wordt toegevoegd aan de url (register.html?code='$code')

    Indien er dan op de link geklikt wordt hoeft men enkel nog gebruikersnaam en wachtwoord in te geven. Het formulier voert volgende code uit:

    PHP Code:
    <?php

    include('configdb.php');

    if(
    $_POST["gebruikersnaam"] && $_POST["wachtwoord"] && $_POST["wachtwoord2"])
    {
    if(
    $_POST["wachtwoord"]==$_POST["wachtwoord2"])
    {
    if(isset(
    $_GET['code'])){
    $activatiestatus $_GET['code'];
    }
    $con mysql_connect("localhost","root");
    mysql_select_db("test"$con);
    $check mysql_query("SELECT * FROM `gebruikers` WHERE `activatiestatus` = '$activatiestatus'");
    $test mysql_num_rows($check);
     
    if(
    $test == 1)
    {
    $gebruikersnaam'gebruikersnaam';
    $servername="localhost";
    $username="root";
    $connmysql_connect($servername,$username)or die(mysql_error());
    mysql_select_db("test",$conn);
    $sql="UPDATE gebruikers SET(gebruikersnaam,wachtwoord)values('$_POST[gebruikersnaam]','$_POST[wachtwoord]') WHERE activatiestatus='$activatiestatus'";
    $result=mysql_query($sql,$conn) or die(mysql_error());
    if(
    $result)
      {
       
    $to $emailadres;
       
    $subject "Bevestiging voor $gebruikersnaam";
       
    $header "Bevestiging van account";
       
    $message "Klik op onderstaande link om uw account te activeren.";
       
    $message .= "localhost/confirm.php?passkey=$activatiestatus";

       
    $sentmail mail($to,$subject,$message,$header);

       if(
    $sentmail)
                {
       echo 
    "De bevestigingsmail is verstuurd naar je emailadres";
       }
       else print 
    "Verzenden van bevestigingsmail mislukt";
       }
       }
      
     else print 
    "Je kan je niet registreren!";
      }
    else print 
    "Wachtwoorden zijn niet hetzelfde! ";
    }
    else print
    "Gegevens zijn niet allemaal ingevuld";

    ?>
    Ziet iemand iets fout want ik krijg steeds volgende melding:
    Code:
    Notice: Undefined variable: activatiestatus in D:\Software\XAMPP\htdocs\confirminvitation.php on line 14
    
    Notice: Undefined variable: activatiestatus in D:\Software\XAMPP\htdocs\confirminvitation.php on line 24
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(gebruikersnaam,wachtwoord)values('goossensj','123') WHERE activatiestatus=''' at line 1
    Nochtans wordt "code" doorgegeven in de url en daarna gelijkgesteld aan $activatiestatus
    XBL: Cr4zYm0nKeYz | Battlelog: Cr4zYm0nKeYz | ...
    no votes  

  2. #2
    CrazyMonkeyz's Avatar
    Registered
    26/05/13
    Location
    Puurs
    Posts
    84
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Zou het kunnen komen doordat ik POST en GET door elkaar gebruik? Mijn formulier is POST-methode, maar maakt dit uit voor variabelen die ik uit de url haal?
    XBL: Cr4zYm0nKeYz | Battlelog: Cr4zYm0nKeYz | ...
    no votes  

  3. #3

    Registered
    19/06/11
    Location
    Hasselt
    Posts
    934
    iTrader
    -3 (0%)
    Mentioned
    0 Post(s)
    Reputation
    0/5
    1a) register.html gaat niet werken -> register.php
    1b) Ga je via XAMPP of dubbel klik je gwn op de file? (dubbel klikken werkt niet)

    2)
    als dat een typ fout HIER was dan misschien :
    if(isset($_GET['code'])){
    $activatiestatus = $_GET['code'];
    }
    daar kom hij niet in dus daar zal het wel ergens zitten.

    3) Is dit snel geschreven / ben je aan het leren? anders heb ik nog heel wat verbeter puntjes (:

    4) Nee $_GET werkt altijd als het in de url staat

    Kan je anders ook je register.html eens posten?

    Of ik kijk er gewoon over (:

    *edit
    Tussen dubbele quotes moet je je variablen niet escapen met enkele quotes dat maakt het gewoon verwarrend imo
    Last edited by Kilghard; 10-10-2013 at 17:59.
    Nobody notices what I'm doing ... Until I stop doing it.
    Webhosting ? Klik hier
    no votes  

  4. #4
    CrazyMonkeyz's Avatar
    Registered
    26/05/13
    Location
    Puurs
    Posts
    84
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by Kilghard View Post
    This quote is hidden because you are ignoring this member. Show
    3) Is dit snel geschreven / ben je aan het leren? anders heb ik nog heel wat verbeter puntjes (:
    Ik ben volop aan het leren Heb voor een bachelorproef gekozen waarbij ik php moet kunnen, maar kan er eigenlijk niets van

    Gebruik idd register.html. Ik zal dit veranderen en hopelijk lost dat alles op
    XBL: Cr4zYm0nKeYz | Battlelog: Cr4zYm0nKeYz | ...
    no votes  

  5. #5
    CrushTheButton's Avatar
    Registered
    27/03/12
    Location
    Knesselare
    Posts
    425
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Heb je een online voorbeeld? Het is altijd makkelijk om zo de fout te vinden voor ons. Wat gebeurt er in de "configdb.php"? Om connectie te maken met je database kan je simpelweg bovenaan de pagina deze verbinding tot stand brengen in plaats van in je "if" statements.

    Wat je nu doet is, wanneer de $_GET['code'] bestaat dan maak je de variable $activatiestatus aan. Wanneer deze niet bestaat dan bestaat de variable ook niet. Als het niet bestaat dan zou de code die van de variable gebruikt maakt ook niet meer mogen geactiveerd worden. Momenteel is dit wel het geval. Uw error zegt dus dat de variable niet bestaat. Er zou dus iets mis moeten zijn met de "isset($_GET['code'])".
    Portfolio website: http://www.rubenvermeulen.be/
    Nederlandstalige PC Multi-Gaming Clan: http://www.soldiersoffreedom.be/
    no votes  

  6. #6
    CrushTheButton's Avatar
    Registered
    27/03/12
    Location
    Knesselare
    Posts
    425
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Kilghard was me voor
    Portfolio website: http://www.rubenvermeulen.be/
    Nederlandstalige PC Multi-Gaming Clan: http://www.soldiersoffreedom.be/
    no votes  

  7. #7

    Registered
    19/06/11
    Location
    Hasselt
    Posts
    934
    iTrader
    -3 (0%)
    Mentioned
    0 Post(s)
    Reputation
    0/5
    Quote Originally Posted by CrazyMonkeyz View Post
    This quote is hidden because you are ignoring this member. Show
    Ik ben volop aan het leren Heb voor een bachelorproef gekozen waarbij ik php moet kunnen, maar kan er eigenlijk niets van

    Gebruik idd register.html. Ik zal dit veranderen en hopelijk lost dat alles op
    hm ik hoop dat je dan toch niets te ingewikkelds gaat moeten doen want dit is vrij basic en vol fouten ^^


    Quote Originally Posted by CrushTheButton View Post
    This quote is hidden because you are ignoring this member. Show
    Kilghard was me voor
    2fast2furious
    Nobody notices what I'm doing ... Until I stop doing it.
    Webhosting ? Klik hier
    no votes  

  8. #8
    CrazyMonkeyz's Avatar
    Registered
    26/05/13
    Location
    Puurs
    Posts
    84
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Van die fouten ben ik me enorm bewust
    een online voorbeeld is er momenteel nog niet, ik zal eerst al eens jullie oplossingen testen en als het dan niet lukt zal ik de rest van php-code posten
    XBL: Cr4zYm0nKeYz | Battlelog: Cr4zYm0nKeYz | ...
    no votes  

  9. #9
    CrazyMonkeyz's Avatar
    Registered
    26/05/13
    Location
    Puurs
    Posts
    84
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Volgens mij ben ik dichter bij een oplossing

    Zit er hier een fout in?

    PHP Code:
    $sql="UPDATE gebruikers SET(gebruikersnaam,wachtwoord)values('$_POST[gebruikersnaam]','$_POST[wachtwoord]') WHERE activatiestatus='$activatiestatus'"
    Krijg namelijk deze melding:

    Code:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(gebruikersnaam,wachtwoord)values('abc','123') WHERE activatiestatus='3cbf' at line 1
    Momenteel krijg activatiestatus dus een waarde, maar hier staat dat die '3cbf' is en eigenlijk is die véél langer (of komt dit gewoon doordat de error niet heel de waarde wil weergeven?)
    XBL: Cr4zYm0nKeYz | Battlelog: Cr4zYm0nKeYz | ...
    no votes  

  10. #10
    Slynx's Avatar
    Registered
    17/01/05
    Location
    Dilbeek
    Posts
    1,954
    iTrader
    48 (93%)
    Mentioned
    2 Post(s)
    Quote Originally Posted by CrazyMonkeyz View Post
    This quote is hidden because you are ignoring this member. Show
    Volgens mij ben ik dichter bij een oplossing

    Zit er hier een fout in?

    PHP Code:
    $sql="UPDATE gebruikers SET(gebruikersnaam,wachtwoord)values('$_POST[gebruikersnaam]','$_POST[wachtwoord]') WHERE activatiestatus='$activatiestatus'"
    Krijg namelijk deze melding:

    Code:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(gebruikersnaam,wachtwoord)values('abc','123') WHERE activatiestatus='3cbf' at line 1
    Momenteel krijg activatiestatus dus een waarde, maar hier staat dat die '3cbf' is en eigenlijk is die véél langer (of komt dit gewoon doordat de error niet heel de waarde wil weergeven?)
    De update syntax is niet dezelfde als een insert statement!

    Code:
    UPDATE table_name
    SET column1=value, column2=value2,...
    WHERE some_column=some_value
    PSN: slynxeh
    no votes  

  11. #11
    CrushTheButton's Avatar
    Registered
    27/03/12
    Location
    Knesselare
    Posts
    425
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Dat ik daar heb overgekeken, zoals "Slynx" zegt. INSERT is niet hetzelfde als UPDATE.

    Dit zou het voor jou moeten zijn.
    PHP Code:
    $sql "UPDATE `gebruikers` SET `gebruikersnaam` = '$_POST[gebruikersnaam]', `wachtwoord` = '$_POST[wachtwoord]' WHERE `activatiestatus` = '$activatiestatus'"
    Portfolio website: http://www.rubenvermeulen.be/
    Nederlandstalige PC Multi-Gaming Clan: http://www.soldiersoffreedom.be/
    no votes  

  12. #12
    CrazyMonkeyz's Avatar
    Registered
    26/05/13
    Location
    Puurs
    Posts
    84
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Enorm bedankt allemaal Het werkt!

    Je zal me waarschijnlijk de komende weken nog met enorm slechte code zien afkomen en met problemen die ik zelf totaal niet opgelost krijg.
    XBL: Cr4zYm0nKeYz | Battlelog: Cr4zYm0nKeYz | ...
    no votes  

  13. #13
    dJeez's Avatar
    Registered
    17/07/02
    Location
    Sol System
    Posts
    10,064
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/78
    Die code vraagt er gewoon om misbruikt te worden. Zoek eens naar SQL injection en hoe je die kan vermijden, anders komt Bobby Tables wel eens langs...

    Wat verplicht leesvoer :
    - http://www.phptherightway.com/
    - http://phpsecurity.readthedocs.org/en/latest/
    - https://www.owasp.org/index.php/Cate...op_Ten_Project
    - https://www.owasp.org/index.php/OWAS...eference_Guide
    Last edited by dJeez; 10-10-2013 at 21:50.
    PSN: dJeezBE - Delicious bookmarks
    Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alieno
    Pastafarian by choice
    no votes  

  14. #14
    dendaak's Avatar
    Registered
    01/07/04
    Posts
    6,404
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/12
    Misschien is dit net iets veiliger?

    PHP Code:
    $db // uw database PDO connectie 

    $sql "UPDATE `gebruikers` SET `gebruikersnaam` = '$_POST[gebruikersnaam]', `wachtwoord` = '$_POST[wachtwoord]' WHERE `activatiestatus` = '$activatiestatus'";  

    $sql "UPDATE gebruikers SET gebruikersnaam=:gebruikersnaam,wachtwoord=:wachtwoord WHERE activatiestatus=:activatiestatus";

    $stmt $db->prepare($sql);

    $params = array(
    'gebruikersnaam' $data['gebruikersnaam'],
    'gebruikersnaam' $data['wachtwoord'],
    'activatiestatus' $data['activatiestatus'],
    );

    $stmt->execute($params); 
    no votes  

  15. #15

    Registered
    19/06/11
    Location
    Hasselt
    Posts
    934
    iTrader
    -3 (0%)
    Mentioned
    0 Post(s)
    Reputation
    0/5
    Hoe is dat veiliger o.O je gebruikt nog altijd $_POST variabelen rechtstreeks in je query , dat is zowat de makkelijkste hack die er bestaat denk ik.

    Google "Sql injection & protection " of zo iets

    & again variabelen tussen dubbele quotes worden geparsed dus geen single quotes nodig
    Nobody notices what I'm doing ... Until I stop doing it.
    Webhosting ? Klik hier
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in