[PHP] Problem sa izmjenom podataka u formi preko Inspect element

Kad se idem registrirat odaberem spol, ili country i kad stisnem F12 promjenim value=" " u sta god hocu i on tako spremi u bazu, kako se to moze zastiti s php-om ?

Evo link pastebin http://pastebin.com/ZKCngy8G

To je korisnikova greška ako on čačka preko inspect elementa svoje neke podatke.
Nisam siguran da možeš gledati je li on preko IE-a ( inspect element ) mijenjao podatke, makar ne preko PHP-a.
Ti ćeš ih spremiti onako kako ih je on unio, njegov problem ako je radio gluposti.
Bitno da nemaš nekih xss propusta, i da unešeni podatci zadovoljavaju neke tvoje kriterije.
I primjetio sam da imaš samo if() uvjet postavljen - što će se dogoditi ako nekim slučajem neki podatak nije nikako postavljen ( npr. izbrišem jedno polje, ili nešto drugo i stisnem register ili šta li već )?

Gle nije to korisnikova pogreska jer pravim jedan cms za laddere to ti je za natjecanja kao i di ce korisnici unosit rezultate matcheva poslje odigrane utakmice i tu se javlja problem jer preko toga moze lazirat rezultat i izazivat koga hoce bez da drugi to potvrdi. Uglavnom napravio sam blok za gender polje

if (!empty($gender)) {
		// if gender is Male or Female
		if ($gender == 'Male') {
			$gender = 'Male';
		} elseif ($gender == 'Female') {
			$gender = 'Female';
		} else {
			$error[] = 'Invalid gender.';
		}
	}

A sad mi treba za zemlje jos a to je malo problem jer je u array sve, popis zemalja vucem iz tablice preko mysql-a, a u $_POST mi stavlja kao Croatia, hr.

U tablici su polja id, name, alpha_2, alpha_3. Jel moguce ikako da bez ikakve petlje provjerim dali su podaci iz $_POST varijable Croatia, hr slazu s onim iz baze name, alpha2 ?

Ne dogodi se nista :smiley:

Koristi ovo: http://www.php.net/in_array

// check if country is valid
	if (!empty($cntry)) {

		$newCountry = explode(',', $cntry); // ovo je post varijabla u kojoj je spremljena Zemlja i alpha_2 key
		$newCountry['0']; // Croatia ( name ) 
		$newCountry['1']; // hr ( alpha_2 key )

		// ako je u array ime zemlje
		if (in_array($newCountry['0'], $country)) {
			$error[] = 'VALID.';
		} else {
			$error[] = 'INVALID.';
		}
	}

I opet nece da nadje a kad idem print_r($country); baci ovako van a na fomi mi baca INVALID mada country postoji u bazi jer iz baze je i ucitano u . Probo sam i ovako napravit

if (in_array("Croatia", $country)) {
    echo "POSTOJI";
} else {
    echo "NE POSTOJI";
}




Array ( 
[0] => Array ( 
[id] => 1 
[0] => 1 
[name] => Afghanistan 
[1] => Afghanistan  
[alpha_2] => af 
[2] => af 
[alpha_3] => afg 
[3] => afg ) 

[1] => Array ( 
[id] => 2 
[0] => 2 
[name] => Aland Islands 
[1] => Aland Islands 
[alpha_2] => ax 
[2] => ax 
[alpha_3] => ala 
[3] => ala ) 

[2] => Array ( 
[id] => 3 
[0] => 3 
[name] => Albania 
[1] => Albania 
[alpha_2] => al 
[2] => al 
[alpha_3] => alb 
[3] => alb ) 

Jedino sto mi pada na pamet je ako bi se mogo ovaj array pokidat da bude slozen kao array(“name”, “alpha_2”) pa onda bi moglo ovo radit sa in_array

Rjeseno

  // check if country is valid
	if (!empty($cntry)) {
		$splitCountry = explode(',', $cntry);
		if ($teams->get_only_country($splitCountry['0'], $splitCountry['1']) === false) {
			$error[] = 'Invalid country.';
		}
	}

I funkcija

public function get_only_country($name, $alpha_2)
{
	$query = $this->db->prepare("SELECT name, alpha_2 FROM countries WHERE name = ? AND alpha_2 = ?");
	$query->bindValue(1, $name);
	$query->bindValue(2, $alpha_2);
	$query->execute();

	$row = $query->rowCount();

	if ($row == 1)
	{
		return true;
	}
	else
	{
		return false;
	}
}