ups, samozrejme u dotazu na konci uzavrit ten apostrof :) Ale stejne to tak nepisu, pouzivam nahrazovani neco jako str_replace, takze pak apostrof nezapominam
a.`id`='".$_SESSION['uid']."'
";
a.`id`='{1}'
";
Příspěvky odeslané z IP adresy 2001:718:2601:26c:a508:42...–
5. Jo, k tem selectum...
$user_get = mysqli_query($con,"SELECT * FROM `user` WHERE `id`='".$_SESSION['uid']."'") or die(mysqli_error($con));
$user = mysqli_fetch_assoc($user_get);
$weapon_get = mysqli_query($con,"SELECT * FROM `weapon` WHERE `id`='".$_SESSION['uid']."'") or die(mysqli_error($con));
$weapon = mysqli_fetch_assoc($weapon_get);
Hele, tak sql jsou tabulky a on umi propojit tabulky a vyrobit jedinou. Dotaz by mel jit zapsat viceradkove. A tusim neni treba uvadet pripojeni $con, pokud nepracujes s vice nez jednim pripojenim. Hlavne si ty dotazy muzes seskladat do pole a pak to cyklem vytahnout. Nemusis pokazde psat formuli mysqli_query, kdyz nepotrebujes data z predchoziho dotazu.
$query = "
SELECT
a.`id` AS `user_id`,
a.`name` AS `user_name`,
b.`name` AS `weapon_name`
FROM
`user` a
LEFT JOIN `weapon` b ON b.`id`=a.`id` -- pripojis dalsi tabulku podle idcek
WHERE
a.`id`='".$_SESSION['uid']
;
$result = mysqli_query($query) or die(mysqli_error());
$data = mysqli_fetch_assoc($result);
var_dump($data);
Spatny algoritmus :) Ony ty programy vetsinou pouzivaji fyzikalni vzorce a snazi se to co nejverneji. Pro konkretni prikad se da ten vzorec vyrazne zjednodusit.
Jinak, u te sklenice, vody, tam je jeste lom svetla na rozhrani. Dalsi pocitani navic.
3b. Nehlede na moznost nahrat vir, ktery vykrade prihlasovaci udaje k bankovnimu uctu pro e-banku a jine krasne veci :) Fakt mne udivuje naivni pristup uzivatelu :)
3. Nenabizel bych pristup Teamviewerem cizi osobe :) Muze ti tam nasadit program, ktery ti vyrabuje pc a jeste z nej udela spam robota :)
4. Ty tam muzes pridat kod, ktery overi, zda tam neco je a kdyz ne, tak tam neco da.
$keys = array('battery','floor'); // seznam vsech sloupcu
foreach ($keys as $key) {!isset($_SESSION[$key]) {$_SESSION[$key]='';}}
Kdyby se mne nekdo ptal, tak budu tvrdit, ze jsem prispevek #1 nevidel :)
Treba jako BRITI, v kazdem radku je stejny sql dotaz. V kazdem radku musi byt splneno qok=0. $stats['quest'] se da napsat jako switch. Cele by se to zjednodusilo asi na 1/10 kodu :)
$update = false;
if($stats['qok'] == 0 && $user['fraction'] == 5){ // BRITI // nema smysl porovnavat brity, kdyz mas qok=1 a tim odpadne fura porovnavani, rychlejsi program
switch ($stats['quest']) {
case 1: $update = (bool)($unit['farmer'] + $unit['tfarmer']) >= 10); break;
case 2: $update = (bool)($unit['worker'] >= 10); break;
}
if ($update) {$stats['qok'] = 1; ...}
}
2. chybove hlasky se daji zobrazit povolenim error_reporting, priklady viz php.net. Osobne pouzivam nastaveni e_ALL. V chybove hlasce je cislo radku, kde nastal problem.
Pokud mas zastaraly php kod nebo znalosti nekde ze skoly, tam pouzivali nastaveni php pro deti. Na teto urovni nelze provozovat servery, takze admini pouzivaji nastaveni, kde je treba hlidat definovani promennych a podobne. Nelze pracovat s $_SESSION['neco'], kdyz nemas zapnute session_start() a nemas 'neco' ulozene. Cili, kdyz neexistuje, tak to nelze porovnavat s jinym cislem. Takovy program je pak snadne hacknout :)