FONForum
http://www.fonforum.org/

F1 oko PHPa?
http://www.fonforum.org/viewtopic.php?f=8&t=11233
Stranica 1 od 1

Autoru:  Shone Zlo [ 23.11.2007. 11:54:41 ]
Tema posta:  F1 oko PHPa?

Kod:
<?php
   $mysql_id = mysql_connect('localhost', 'guest', '');

   if(!$mysql_id){
      die('nema konekcije sa bazom: ' . mysql_error());
   }
   
   mysql_select_db('shonetov_sajt');
   
   if($_POST["nick_field"] == " "){
      $message = 'Neophodno je popuniti sva polja da bi se dodao komentar';      
   } else if ($_POST["comment_area"] == " ") {
      $message = 'Neophodno je popuniti sva polja da bi se dodao komentar';
   } else {
      $message = 'Komentar je uspesno dodat';            
//      $nick = $_POST["nick_field"];
//      $comm = $_POST["comment_area"];
      $query = "INSERT INTO 'knjiga_gostiju' (id, nick, comment)
         VALUES ('', '$_POST["nick_field"]', '$_POST["comment_area"]')";
      mysql_query($query, $mysql_id);
      mysql_close($mysql_id);            
   }      
      
?>


Dakle, kad je kod ovako postavljen dobijam gresku u fazonu "ne prosledjujem mu stringove u VALUE".Ako prvo deklarishem $nick i $comm pa njih prosledjujem u VALUE, onda ne dobijam nikakvu gresku ali u bazu ubacuje "komentare" koji se sastoje samo od brojeva.Ako u nicku ili commentu postoji makad 1 slovo komentar jednostavno ne ulazi u bazu i nemam nikakvu gresku?Jel vidi neko gde je problem?

Polja u bazi su: id(int, autoincrement; nick, varchar(20); comment (text))
Kod se isto ponasha i ako iz upita iskljucim polje id

Aj ako neko ima ideju sta ovde fali neka rekne :)

Autoru:  kliford [ 23.11.2007. 12:28:07 ]
Tema posta: 

Kod:
$query = "INSERT INTO 'knjiga_gostiju' (id, nick, comment) VALUES ('', '$_POST["nick_field"]', '$_POST["comment_area"]')";


A da u $_POST["nesto_nesto"] dodas slashes ispred ", ovako ga bunis jer u celom $query stringu imas dvostruke navodnike, pa u okviru njih jednostruke, pa u okviru njih opet dvostruke...

Probaj u IF-ovima da umesto $_POST["asdf"] = " " stavis $_POST["asdf"]=null ili !$_POST["asdf"]...

pobaj da za comment, umesto tipa text stavis neki veliki varchar...

pfff, ovako, na oko, ne vidim nikakvu gresku (osim onoga sa navodnicima, ali i to si zaobisao uvodjenjem promenljivih $nick i $comm, samo sam ti objasnio u cemu gresis), kad dodjem kuci, probacu da debugujem to tvoje :]

Btw, baci i deo koda kojim se preko POST-a salju 'nick' i 'comment', moguce je da je tu greska..

Autoru:  Shone Zlo [ 23.11.2007. 12:58:33 ]
Tema posta: 

Evo koda koji radi, naravno bilo je sranja oko navodnika...Btw u cemu je razlika izmedju 'nestonesto' i "nestonesto" ? :zbun:

Kod:
<?php

   $mysql_id = mysql_connect('localhost', 'guest', '');



   if(!$mysql_id){

      die('nema konekcije sa bazom: ' . mysql_error());

   }

   

   mysql_select_db('shonetov_sajt');

   

   if($_POST["nick_field"] == ""){

      $message = 'Neophodno je popuniti sva polja da bi se dodao komentar';      

   } else if ($_POST["comment_area"] == "") {

      $message = 'Neophodno je popuniti sva polja da bi se dodao komentar';

   } else {

      $message = 'Komentar je uspesno dodat';

      $query = "INSERT INTO knjiga_gostiju (id, nick, comment)";

      $query = $query." VALUES ('', '$_POST[nick_field]', '$_POST[comment_area]')";

      mysql_query($query,$mysql_id);

      mysql_close($mysql_id);            

   }      

      

?>

Autoru:  salebab [ 23.11.2007. 13:34:23 ]
Tema posta: 

kod ti je podlozan sql injection. Jednostavno, probaj da uneses karakter ' u comment i videces da ces dobiti gresku :)

radi ovako:
Kod:
<?php

$nick = addslashes($_POST['nick_filed']);
$comment = addslashes($_POST['nick_field']);

/**
 * i sada proveravas dal su $nick i $comment prazni.
 * ako je sve u redu:
 * - povezi se sa bazom
 * - upisi podatke u bazu ALI koristeci $nick i $comment a ne $_POST...
 */


Kada ispisujes podatke iz baze koristi stripslashes() funkciju.

A na primeru cu ti pokazati razliku izmedju ' i "

Kod:
/* primer za ' */

$broj = 52;

print 'broj: $broj ';
// na ekranu ce se ispisati:
// broj: $broj


Kod:
/* primer za " */

$broj = 52;

print "broj: $broj ";
// na ekranu ce se ispisati:
// broj: 52


Nadam se da si razumeo.... :)

Autoru:  Shone Zlo [ 23.11.2007. 18:30:26 ]
Tema posta: 

tnx za pointere :)

Stranica 1 od 1 Sva vremena su u UTC + 1 sat
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/