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
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
// 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;
}
}