Pomoc oko Checkbox-a!

Gle, poanta ti je kod SQL injection upada, da ti korisnik ubaci navodnik u vrijednost varijable…iza navodnika onda praktički može nastaviti pisati SQL naredbu.

Stoga koristiš mysql_real_escape_string() kojeg si gore dobio.

@tony i dalje me zanima zašto nije dobro koristiti if($x) , ako $x nije definiran ?? Gdje se ta greška mora očitovati ako skripta ne vrišti??
Još uvijek se nadam da to slobodno dalje koristim :slight_smile:
Nije li možda bitnija razlika između ta dva načina ovo:

$x=0;
if($x) {} //false
if(isset($x)){} //true

U principu dobit ćeš notice (obavijest), ne error (grešku koja uzrokuje prestanak rada koda), tako da će u konačnici tvoj kod i dalje biti funkcionalan (u ovom slučaju ako varijabla nije postavljena - rezultat će biti isti kao i da si ju postavio $x=0) ali moraš shvatiti da notice služi kako bi ti kao developer znao gdje i što možda nije u redu.
Još jedan razlog vrijedan spomena je da notice ti baci rečenicu tipa

Notice: Undefined index: nekoIme in C:\wamp\www\tuts\webmajstori\tvojaSkripta.php on line 2

i koristi memoriju. Vjerojatno ne u nekoj mjeri gdje će prekinuti tvoju skriptu radi nedostatka memorije, ali mislim da tehnički gledano bi tebe kao developera to svejedno trebalo zanimati. Čak i ako isključiš prikaz grešaka u PHPu, taj notice svejedno postoji i uzima memoriju, tek toliko da znaš da ne bi isključio prikaz grešaka misleći da onda možeš spavati mirne duše. :wink:

1 Like

Sad mi je jasnije :wink: Hvala još jednom!

Naravno u bazu unosim samo putanju slika a slike cuvam u folderu!Evo kako unosim slike!

for ($i=0;$i<count($_FILES['file']['name']);$i++){
	$ran_num =  mt_rand().mt_rand().mt_rand().mt_rand().mt_rand();
    echo "<br>";
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["file"]["name"][$i]);
    $extension = end($temp);
    if ((($_FILES["file"]["type"][$i] == "image/gif")
    || ($_FILES["file"]["type"][$i] == "image/jpeg")
    || ($_FILES["file"]["type"][$i] == "image/jpg")
    || ($_FILES["file"]["type"][$i] == "image/pjpeg")
    || ($_FILES["file"]["type"][$i] == "image/x-png")
    || ($_FILES["file"]["type"][$i] == "image/png"))
    && ($_FILES["file"]["size"][$i] < 1000000) && ($_FILES["file"]["error"][$i]==0)
    && in_array($extension, $allowedExts)){
        echo "Upload: " .$i ."_" .$ran_num. $_FILES["file"]["name"][$i] . "<br>";
        echo "Type: " . $_FILES["file"]["type"][$i] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"][$i] / 1024) . " kB<br>";
        echo "Stored in: " . $_FILES["file"]["tmp_name"][$i]."<br>";
        if (file_exists("upload/".$i ."_".$ran_num . $_FILES["file"]["name"][$i])){
            echo "<b>".$_FILES["file"]["name"][$i] . " already exists.</b><br> ";
        } else {
            move_uploaded_file($_FILES["file"]["tmp_name"][$i],
            "upload/".$i ."_" .$ran_num. $_FILES["file"]["name"][$i]);
            echo "<b>Uploaded to</b>: ". "/postavi_oglas/". "upload/" .$i ."_" .$ran_num. $_FILES["file"]["name"][$i]."<br>";
			$slika= "/postavi_oglas/". "upload/" .$i ."_" .$ran_num. $_FILES["file"]["name"][$i];
			echo $slika;
			echo "<br>";
$q = mysqli_query($con,"INSERT INTO `automobili_slike` (
 `id` ,
 `slika`,
 `id_oglasa`
 )
 VALUES (
 NULL , '$slika','$id_oglasa'
 );");

}}
}

@tony Do sada sam zastitio sve kako si rekao.A Jel ima potrbe stititi ovu formu za dodavanje slika ili mu ova provera dodje kao zastita :

 if ((($_FILES["file"]["type"][$i] == "image/gif")
    || ($_FILES["file"]["type"][$i] == "image/jpeg")
    || ($_FILES["file"]["type"][$i] == "image/jpg")
    || ($_FILES["file"]["type"][$i] == "image/pjpeg")
    || ($_FILES["file"]["type"][$i] == "image/x-png")
    || ($_FILES["file"]["type"][$i] == "image/png"))
    && ($_FILES["file"]["size"][$i] < 1000000) && ($_FILES["file"]["error"][$i]==0) 

Sve mi se čini da si u redu napisao, samo što si mogao to puno ljepše i urednije napisati sav taj kod umjesto te zbrke koju imaš. Primjerice ovo iz zadnjeg posta si mogao i ovako:

$ext = ['image/gif', 'image/jpeg', 'image/jpg', 'image/png'];
$file = $_FILES['file']['type'][$i];

if( in_array($file, $ext) ) 
{
   // tvoj kod
}

@tony Poslusao sam te.Umesto da i ne upisujem u bazu 1 i 0.Cak sam i marke automobila kojih ima preko sto i modele kojih ima preko 2000 upisao kao brojeve (tj. upisivace se kad korisnici budu postavljali oglas) Sad mi treba mala pomoc.Pada mi nesto na pamet al sam na poslu pa nemogu da isprobam.Evo o cemu se radi.Kod prikaza oglasa imam dva polja.U prvom spisak opreme npr.
klima-da
servo-da
webasto-ne
E sad kako da to 0 i 1 iz baze pretvorim u ovo ne i da?

I sto se tice drugeog polja tu bih da imam listu opreme koja je cekirana Znaci ako su klima i servo cekirani da budu na listi a naprimer webasto nije cekiran da neispise nista,jednostavno ga nema na listi.Jel moze pomoc kako to da izvedem?
E sad kako 0 i 1 iz

Resio sam to ovako:

 <?php
    $abs = $red['abs'];
    $servo = $red['servo'];
    if ($abs==1) {
      echo"Abs,";

     elseif ($abs==0) {
    	echo" ";
  }

    if ($servo==1) {
    	echo"Servo ,";
   }

    elseif ($servo==0) {
    	echo" ";
    			} 
    ?>

Jel moze neko da mi kaze da li je to ispravan nacin?
I da li ce biti dobro da tako uradim i za modele automobila posto ih ima oko 2000?
Pa cu imati oko 2000 elseif!
Da li ce to prouzrokovati neki problem?
Hvala svima i pozz!

Ti si smjestio elseif unutar if tvrdnje. :grin:

Da ja to radim, ja bih u samom sql queryju uzeo sve što moram prikazati, a ono što ne moram ne bih ni hvatao. Tako da ne vučeš sve rezultate iz baze podataka i ne uspoređuješ ih u PHPu (što košta resursa), nego uzimaš samo ono što ti treba i ispisuješ s jednom foreach petljom sve što postoji u povratnim rezultatima, tako da ne moraš ručno pisati 2000 if/elseif tvrdnji nego zapravo sve riješiš u nekoliko linija koda.

Palo mi je na pamet drugacije resenje koje mi se cini mnogoo bolje.Sta mislis da naprevim jos jednu tabelu u bazi gde cu immati id kao primary key koji ce biti identican sa sifrom marke-mmodela.Znaci ako neko postavi opela u bazu mi se upisuje 163 posle pri prikazu vadim iz one tabele model ciji jeId 163 a to je naravno opel.Jel ovaj nacin bolji nego predhodni?

@tony zboravio sam da te obbelezim u predhodnom postu.

pa sto ne bi imao sve u jednoj tablici? neki id, ime modela i sta god ti treba…
kad punis neki select ili nesto drugo, za value stavis id, ako ti treba ime modela ispises naziv… Ne znam kakva ti je sad struktura tablica, ali nema potrebe da jos jednu tablicu punis, samo da bi dodao jos jedno polje

@webdeveloping03
Imam sve u jednoj tablici id,marku,model,klima,abs,servo i td.(oko 70 kolona)
Kad korisnici unose oglas stavio sam id za value a za ime nazive.Kad neko selektuje recimo opel u polje marka upisuje 163, callibra u polje model 1515 ako selektuje manuelnu klimu u polje klima upisuje 2510,ako cekira da ima abs u polje abs upisuje 1
pa pri pretrazi izvlacim tekst preko id-a (iz posebne tabele koju samnapravio)
Pri prikazu ovog oglasa vadim iz te tabele tekstove sa id-om
163-opel
1515-calibra
2510-manuelna klima
1-da
i td… Neznam dal sam bas uspeo najbolje da objasnim sta sam uradio ali mi se cini da je ovaj nacin OK.