Započni novu temu Odgovori na temu  [ 5 Posta ] 
Autoru Poruka
 Tema posta: F1 oko PHPa?
PostPoslato: 23.11.2007. 11:54:41 
Korisnikov avatar

Pridružio se: 06.11.2005. 12:30:17
Postovi: 3341
Lokacija: shonetova gajba
Godina: Dipl.
Smer: IS
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 :)

_________________
A hydrogen bomb in a necktie.


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 23.11.2007. 12:28:07 
Moderator
Korisnikov avatar

Pridružio se: 11.11.2004. 14:34:28
Postovi: 8655
Godina: Apsolvent
Smer: IS
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..

_________________
Tommorow is cancelled due to lack of interest!
...
O, da mi je da se još jednom zaljubim,
Opet bih uzeo kostim Večnog dečaka,
I opet bih smislio kako da prodangubim
Dok ona ne sleti niz hodnik Studenjaka...


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 23.11.2007. 12:58:33 
Korisnikov avatar

Pridružio se: 06.11.2005. 12:30:17
Postovi: 3341
Lokacija: shonetova gajba
Godina: Dipl.
Smer: IS
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);            

   }      

      

?>

_________________
A hydrogen bomb in a necktie.


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 23.11.2007. 13:34:23 
Moderator
Korisnikov avatar

Pridružio se: 28.10.2004. 23:06:03
Postovi: 3369
Lokacija: Bgd
Godina: IV
Smer: IS
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.... :)

_________________
Autobuski prevoz


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 23.11.2007. 18:30:26 
Korisnikov avatar

Pridružio se: 06.11.2005. 12:30:17
Postovi: 3341
Lokacija: shonetova gajba
Godina: Dipl.
Smer: IS
tnx za pointere :)

_________________
A hydrogen bomb in a necktie.


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
Prikaži postove u poslednjih:  Poređaj po  
Započni novu temu Odgovori na temu  [ 5 Posta ] 


Ko je OnLine

Korisnici koji su trenutno na forumu: Nema registrovanih korisnika i 8 gostiju


Ne možete postavljati nove teme u ovom forumu
Ne možete odgovarati na teme u ovom forumu
Ne možete monjati vaše postove u ovom forumu
Ne možete brisati vaše postove u ovom forumu
Ne možete slati prikačene fajlove u ovom forumu

Pronađi:
Idi na:  
Copyleft FONForum 2001-2014 | Powered by phpBB © phpBB Group