Autor Zpráva
Monkeys
Profil *
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
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 *
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
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 *
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
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'].

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0