Autor | Zpráva | ||
---|---|---|---|
Monkeys Profil * |
#1 · Zasláno: 27. 6. 2011, 10:28:38
Dobry den
Vyrobil som forum pre zakaznika ale problem je ze si uz fakt neviem rady s jednym problemom a to je ze sa mi po 2 dnoch samo vymaze cele forum. Rozmyslam cim to moze byt ale nic ma nenapada pouzivam vzdy ten isty kod a na inych forach to funguje bez problemov. dakujem |
||
Alphard Profil |
#2 · Zasláno: 27. 6. 2011, 11:48:06
Nedostatek informací, bez kódu můžeme jen hádat, tím ale nechci říct, abyste sem vše zkopíroval. Ukládáte do databáze, nebo do souboru? Smazalo se to po 2 dnech opakovaně, nebo jen jednou?
|
||
Monkeys Profil * |
#3 · Zasláno: 27. 6. 2011, 14:30:25
Alphard:
Zmazava sa to opakovane. Data sa zapisuju do databaze. tu je kod: if(isset($_POST['odosli'])) { $i=NULL; $a=NULL; if (strlen($_POST['meno']) > 0) { $meno=true; }else{ $meno=false; $i .="<span class=\"vystraha\">Nezadali ste svoje meno!</span><br>"; } if (strlen($_POST['predmet']) > 0) { $predmet=true; }else{ $predmet=false; $i .="<span class=\"vystraha\">Nezadali ste predmet príspevku!</span><br>"; } if (strlen($_POST['sprava']) > 0) { $sprava=true; }else{ $sprava=false; $i .="<span class=\"vystraha\">Nezadali ste žiadnu správu!</span><br>"; } if (strlen($_POST['antispam']) == 0) { $antispam=true; }else{ $antispam=false; header("location: forum.php"); } $meno = htmlspecialchars($_POST['meno']); $sprava = htmlspecialchars($_POST['sprava']); $predmet = htmlspecialchars($_POST['predmet']); $meno= trim($_POST['meno']); $sprava = trim($_POST['sprava']); $predmet = trim($_POST['predmet']); $sprava = mb_substr($_POST['sprava'], 0, 1500, 'UTF-8'); $datumcas = Date("d. " . "+m+ " . "Y, " . "H:i" ); $datumcas = strtr($datumcas, array('+01+' => 'Januára', '+02+' => 'Februára', '+03+' => 'Marca', '+04+' => 'Apríla', '+05+' => 'Mája', '+06+' => 'Júna', '+07+' => 'Júla', '+08+' => 'Augusta', '+09+' => 'Septembra', '+10+' => 'Októbra', '+11+' => 'Novembra', '+12+' => 'Decembra')); if ($meno && $predmet && $sprava && $antispam) { $sql = mysql_query("INSERT INTO kniha (meno,predmet,sprava,datumcas) VALUES ('$meno','$predmet','$sprava','$datumcas')"); if($sql) { $a .= "Váš komentár bol pridaný."; } }} a vypis do tabulky je tu: <td colspan="3"><?php if (isset($i)){ echo '<p class="red_box"><b>Vyskytli sa chyby!</b><br>', $i, '</p>'; }else if (isset($a)){ echo '<p class="warning">', $a, '</p>'; } ?></td> </tr> |
||
Alphard Profil |
#4 · Zasláno: 27. 6. 2011, 15:33:42
Daný kód by neměl dělat problémy, ale evidentně moc neřešíte např. sql injection. Nemaže vám to někdo?
|
||
Monkeys Profil * |
#5 · Zasláno: 27. 6. 2011, 15:40:52
Alphard:
Aj ja si to myslim uz som zablokoval aj neake nezname IP ale aj tak to stale robi ! Neviem ako to mam vyriesit. Urcite sa do deje automaticky niekedy v noci lebo rano je to vymazane. Dakujem |
||
Alphard Profil |
#6 · Zasláno: 27. 6. 2011, 16:12:43
Ihned začněte logovat veškeré requesty (i POST proměnné). Pak zjistíte, jaká část (jestli vůbec) je zneužívaná a opravíte ji.
Postupně byste měl vše zabezpečit. Každý řetězec vstupující do sql dotazu musí projít mysql_real_escape_string() a každé číslo explicitně přetypovat na číslo, tj. (int) $_GET['id']. |
||
Časová prodleva: 13 let
|
0