A co za to? Udelat neco pro cizi lidi je vetsinou odmenovano. Treba 500 kc za kazdou zapocatou hodinu, kdyz se jedna o programovani. Jinak se nema cenu s tim piplat.
$username = mysqli_real_escape_string($con, $_POST['username']);
$username = htmlspecialchars( $username );
$password = mysqli_real_escape_string($con, $_POST['password']);
$password = htmlspecialchars( $password );
$email= mysqli_real_escape_string($con, $_POST['email']);
$email = htmlspecialchars( $email );
// --- Si to uloz do pole, ne?
// --- A escapuj, az je potreba escapovat.
function escapeHtml($str) {return htmlspecialchars($str);}
function escapeSqlValue($str) {return mysqli_real_escape_string($str);} // pokud nepouzivas vic $connection, tak se tam nemusi psat
function escapeUrl($str) {return erlencode($str);}
function sql($query) {return mysqli_query($query) or die(mysqli_error());}
//function sql($query) {global $con; return mysqli_query($con,$query) or die(mysqli_error());} // jestli trvas na tom $con
$form = array();
$form_sql = array();
$form_html = array();
$filter = array('username','password','email','frakcia');
foreach($filter as $key) {$form[$key] = $_POST[$key];}
$form['code'] = generate_code();
$form['password'] = sha1($form['password']); // sql ma taky SHA1(), ale budiz, pouziji php
foreach($form as $key) {$form_sql[$key] = escapeSqlValue($form[$key]);}
foreach($form as $key) {$form_html[$key] = escapeHtml($form[$key]);}
// --- na ted priklad, jak se to pouziva
//$ins3 = mysqli_query($con,"INSERT INTO `user` (`username`,`password`,`email`,`fraction`,`activated`,`code`) VALUES ('$username', '".sha1($password)."', '$email', '$frakcia', 1, '$code')") or die (mysqli_error());
//$ins6 = mysqli_query($con,"INSERT INTO `ranking` (`number`) VALUES (0)") or die (mysqli_error());
$query = "INSERT INTO `ranking` (`number`) VALUES (0)";
$ins6 = sql($query);
$query = "
INSERT INTO
`user`
(
`username`,
`password`,
`email`,
`fraction`,
`activated`,
`code`
)
VALUES
(
'".$form_sql['username']."',
'".$form_sql['password']."',
'".$form_sql['email'] ."',
'".$form_sql['frakcia'] ."',
1,
'".$form_sql['code'] ."'
)";
$ins3 = sql($query);
// --- a ted jeste jednou, spravne pouziti escapovani
// html
$x = '</b>'; $a = "<b>aaa"; $b = "bbb</b>"
echo $a.escapeHTML($x).$b; // aaa i bbb musi byt tucne, znaky < > se zmeni na < a >
echo $a.$x.$b; // spatne, tucne bude jen aaa
// url
$url = 'https://neco.cz/a=';
$value = "hve zdi cka";
echo $url.$value;
echo $url.escapeUrl($value); // mezery a divne znaky by to melo nahradit jako %20 a pod
// html url
$a = '<a href="'; $b = '">odkaz</a>';
$url = 'https://neco.cz/a=';
$value = "hve zdi cka";
echo $a.$url.$value.$b; // chyba, chyba, uplne spatne
echo $a.escapeHtml($url.escapeUrl($value)).$b; // adresu musis escapovat, aby byl platny odkaz a navic je to hodota pro html a ta musi byt escapovana podle html
// sql
$username = 'yy""\'\'xx';
$query = "INSERT INTO `user` (`username`) VALUES ('".escapeSqlValue($username)."')";
// kdyz mas v promenne treba uvozovky, tak bys narusil php, vypadalo by to takto
// "INSERT INTO `user` (`username`) VALUES ('".$username."')"
// "INSERT INTO `user` (`username`) VALUES ('yy""''xx')" // coz je totez jako
// "INSERT INTO `user` (`username`) VALUES ('yy";
// a ted, proc se s tim escapovanim tak pitvam? Protoze to mas spatne!
$password = mysqli_real_escape_string($con, $_POST['password']);
$password = htmlspecialchars( $password );
// kdybych si do $password chtel dat uvozovku ' " nebo znak vetsi, mensi >
// <, tak tvuj kod to naprosto zbytecne prekoduje. Samozrejme to bude
// fungovat, ale principialne to neni ok. A na zaver z toho delas jeste sha1.
// 1. Kdybys pak chtel heslo zmenit rucne, sql phpmyadmin nabizi moznost
// vlozit sha1, takze napises treba string ja>ni<cka, ale pres program se
// nenalogujes, protoze tvuj program bude potrebovat ja>ni<cka
// 2. Pokud to heslo vypisujes zpetne do formulare, tak zase nebudou spravne
// fungovat uvozovky. ja"ni"cka se ti prepise na ja\"ni\"cka,protoze misto
// htmlspecialchars(ja"ni"cka) jsi pouzil
// mysqli_real_escape_string(htmlspecialchars(ja"ni"cka))
// Mozna te to vubec netrapi, ale kdyz tam budes davat treba clanek, ktery
// ma uvozovky a pouziva vetsitka, mensitka, tak uz to problem je