Avatar billede lylover Nybegynder
30. august 2011 - 18:42 Der er 6 kommentarer

Simpel query problem

$bruger = $_GET["bruger"];
        $f_name = $_SESSION["brugernavn"];
        echo "INSERT INTO facebook_posts (post,f_name,userip,date_created) VALUES('".checkValues($_REQUEST['value'])."','$f_name','$bruger','".strtotime(date("Y-m-d H:i:s"))."');";
       
        mysql_query("INSERT INTO facebook_posts (post,f_name,userip,date_created) VALUES ('".checkValues($_REQUEST['value'])."','$f_name',
'$bruger','".strtotime(date("Y-m-d H:i:s"))."')") or die(mysql_error());

Ovenstående kode er et jeg bruger til at indsætte nogle posts med tilhørende bruger id.
Den indsætter dog IKKE noget som helst i userip columnen ? :)
Nogle ideer til hvad der kan være galt?
Avatar billede majbom Novice
30. august 2011 - 18:53 #1
så er $bruger vel tom?

og hvorfor ikke bruge et datetime-felt til "date_created" og sætte default value til CURRENT_TIMESTAMP ? så er det nemmere at sortere på (og mange andre ting er meget nemmere...)
Avatar billede heinzdmx Nybegynder
30. august 2011 - 19:42 #2
Pas på, din kode er følsom over for SQL injections, så i teorien kunne folk slette alt i din DB!

Læs lidt mere om det her:
http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php


Desuden, ville et lille tip være at i stedet for at have den samme stump tekst (din echo og din mysql_query) så læg de i en variabel som du bruger i begge - det gør det nemmere at lave en ændring :)
Avatar billede olebole Juniormester
30. august 2011 - 22:25 #3
<ole>

I dag behøver man heldigvis ikke forsøge at 'hacke' sig uden om SQL-injections. I stedet bør man bruge mysqli eller PDO, som nu om stunder er installeret på langt de fleste hoteller

/mvh
</bole>
Avatar billede Mikardo Nybegynder
10. september 2011 - 09:59 #4
// prepared statement

$mysqli; // din data connection.

$bruger = @$_GET["bruger"];

$f_name = $_SESSION["brugernavn"];

if(isset($_GET['bruger']))
{

if($stmt = $mysqli -> prepare("INSERT INTO facebook_posts (post,f_name,userip,date_created) VALUES (?,?,?,?) "))
{

$stmt ->bind_param("ssis",checkValues($_REQUEST['value']),$f_name,$bruger,strtotime(date("Y-m-d H:i:s")));

$stmt -> execute();

$stmt-> close();



}


}
Avatar billede lylover Nybegynder
09. februar 2012 - 17:17 #5
Smid svar Mikardo :)
Avatar billede Mikardo Nybegynder
10. februar 2012 - 12:16 #6
:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester