Toon posts:

Geen data naar database

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goedeavond,

(Ik ben nog niet zolang bezig met php).

Ik probeer dus namelijk data naar een database te schrijven. dit lukt namelijk. Maar eens ik aan het spelen ga met
PHP:
1
 mysqli_real_escape_string
gaat het echter helemaal mis.

Want ik heb nu dit script opgesteld.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php 
// PHP includes
include "../connect.php";
      
      $sql="INSERT INTO logins (Website_applicatie, Login, Pass, Notitie, Hyperlink)
                VALUES
                    ('$service','$login','$pass','$notitie','$url')";

                if (!mysqli_query($con,$sql))
            {
                die('Error: ' . mysqli_error($con));
            }
                
                header("Location: ../../logins.php");
                
                // SQL injection protection
                $service = mysqli_real_escape_string($_POST[service]);
                $login = mysqli_real_escape_string($_POST[login]);
                $pass = mysqli_real_escape_string($_POST[pass]);
                $notitie = mysqli_real_escape_string($_POST[notitie]);
                $url = mysqli_real_escape_string($_POST[url]);

                mysqli_close($con);
        ?>


Echter krijg ik geen parse errors maar het probleem is namelijk dat dit script dus niet in de databases opslaat.

Iemand hier een oplossing voor of iemand die me opweg wilt helpen?

Want ik heb namelijk ook in de real_escape_strings ook al mijn connectie bij gezet maar zonder succes.
en op google kan ik namelijk ook echter niet zo direct iets vinden

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je voert eerst data in in query string en pas nadat je die query hebt uitgevoerd ga je hem escapen, dus je zit lege strings in je database te stoppen...wat vast niet mag omdat je bijvoorbeeld ergens een unique index op hebt ofzo.

Wat jij wil kan wel min of meer als je prepared statements gebruikt (is sowieso netter dan mysqli_real_escape_string).

Op Google kun je hier trouwens meer dan genoeg over vinden. [google=how to use mysqli_real_escape_string] geeft mij toch écht meer dan genoeg informatie. Ook elke beginnerstutorial over het gebruik van MySQL in PHP gaat hierop in.

Zelfs als de volgorde van escapen niet het probleem is moet je door simpelweg wat te debuggen meer informatie kunnen verkrijgen dan "hij slaat niets op in de database." Zie ook Programming FAQ - Debuggen: hoe doe ik dat?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
NMe schreef op vrijdag 29 november 2013 @ 19:31:
Je voert eerst data in in query string en pas nadat je die query hebt uitgevoerd ga je hem escapen, dus je zit lege strings in je database te stoppen...wat vast niet mag omdat je bijvoorbeeld ergens een unique index op hebt ofzo.

Wat jij wil kan wel min of meer als je prepared statements gebruikt (is sowieso netter dan mysqli_real_escape_string).

Op Google kun je hier trouwens meer dan genoeg over vinden. [google=how to use mysqli_real_escape_string] geeft mij toch écht meer dan genoeg informatie. Ook elke beginnerstutorial over het gebruik van MySQL in PHP gaat hierop in.

Zelfs als de volgorde van escapen niet het probleem is moet je door simpelweg wat te debuggen meer informatie kunnen verkrijgen dan "hij slaat niets op in de database." Zie ook Programming FAQ - Debuggen: hoe doe ik dat?
Thanks

Acties:
  • 0 Henk 'm!

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 22-09 15:33
Zelf zou ik het zo aanpakken;

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// PHP includes 
include "../connect.php"; 

// SQL injection protection 
                $service    =    mysqli_real_escape_string($con, $_POST['service']); 
                $login      =    mysqli_real_escape_string($con, $_POST['login']); 
                $pass       =    mysqli_real_escape_string($con, $_POST['pass']); 
                $notitie    =    mysqli_real_escape_string($con, $_POST['notitie']); 
                $url        =    mysqli_real_escape_string($con, $_POST['url']); 
      
                $sql="INSERT INTO 
                    `logins` 
                    (`Website_applicatie`, `Login`, `Pass`, `Notitie`, `Hyperlink`) 
                    VALUES 
                    ('$service','$login','$pass','$notitie','$url')"; 

                
                if (!$result = $con->query($sql)) 
              { 
                  die('Error: ' . mysqli_error($con)); 
              } 
//Om je query snel te checken. 
                 //echo $sql; 
//Header wegcommenten, anders krijg je natuurlijk de 'headers allready send error
              mysqli_close($con);   
              header("Location: ../../logins.php");

Hoewel dit eigenlijk verre van mooie code is. (Puur bedoelt voor de volgorde van zaken.)
Maak een SQL verbinding, escape de data, maak een query, en execute de query, ipv maak een verbinding, maak en execute de query zonder data :S, escape de data.

Originally, a hacker was someone who makes furniture with an axe.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Biersteker schreef op vrijdag 29 november 2013 @ 19:53:
Zelf zou ik het zo aanpakken;

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// PHP includes 
include "../connect.php"; 

                       // SQL injection protection 
                $service    =    mysqli_real_escape_string($con, $_POST['service']); 
                $login      =    mysqli_real_escape_string($con, $_POST['login']); 
                $pass       =    mysqli_real_escape_string($con, $_POST['pass']); 
                $notitie    =    mysqli_real_escape_string($con, $_POST['notitie']); 
                $url        =    mysqli_real_escape_string($con, $_POST['url']); 
      
                $sql="INSERT INTO 
                    `logins` 
                    (`Website_applicatie`, `Login`, `Pass`, `Notitie`, `Hyperlink`) 
                    VALUES 
                    ('$service','$login','$pass','$notitie','$url')"; 

                
                if (!$result = $con->query($sql)) 
              { 
                  die('Error: ' . mysqli_error($con)); 
              } 
                 //echo $sql; //Om je query snel te checken. 
                 //Header wegcommenten, anders krijg je natuurlijk de 'headers allready send error
              mysqli_close($con);   
              header("Location: ../../logins.php");

Hoewel dit eigenlijk verre van mooie code is. (Puur bedoelt voor de volgorde van zaken.)
Maak een SQL verbinding, escape de data, maak een query, en execute de query, ipv maak een verbinding, maak en execute de query zonder data :S, escape de data.
Biersteker ik ben nog maar een leek. en ik besef dat ik best dom ben geweest om die escape strings vanonder te steken

Acties:
  • 0 Henk 'm!

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 22-09 15:33
Ik bedoelde eigenlijk mijn eigen code ;) (Beetje lomp switchen tussen OOP en Procedural style ;) )
$con->query($sql) vs mysqli_query($con,$sql) bijvoorbeeld.

Originally, a hacker was someone who makes furniture with an axe.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Biersteker schreef op vrijdag 29 november 2013 @ 19:58:
Ik bedoelde eigenlijk mijn eigen code ;) (Beetje lomp switchen tussen OOP en Procedural style ;) )
$con->query($sql) vs mysqli_query($con,$sql) bijvoorbeeld.
wel ik begin eerst maar eens rustig met Procedural style
Pagina: 1