http://wowmoon.ru/1/?option=main&id_descr=5 When adding a comment, the previous entry in the database is duplicated. Tell me how to solve the problem, I apologize for a ton of code earlier, I just donβt know where the error might be.
abstract class ACore { public $pdo; function __construct() { $this->pdo = new PDO("mysql:host=localhost;charset=cp1251;dbname=blog", "root", ""); $this->pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); } protected function getHeader() { include("templates/header.html"); } protected function getLeftBar() { include("templates/left.html"); } protected function getFooter() { include("templates/footer.html"); } public function getBody() { if($_POST) { $this->obr(); } if($_GET['id_descr']) $this->cods = $this->capcha(); $this->getHeader(); $this->getLeftBar(); $this->getContent(); $this->getFooter(); } } class main extends ACore { protected $id; protected $error; protected $echoERROR; protected $error_comm; protected function capcha() { //ΠΠΎΠΏΡΠΎΡΡ $q[0] = "ΠΠ½Π°Π½Π°Ρ"; $q[1] = "ΠΠ°Π½Π°Π½Ρ"; $q[2] = "ΠΡΠ±ΡΠ·"; $q[3] = "Π―Π±Π»ΠΎΠΊΠΎ"; //ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ½ΠΈΡ $imgq[0] = "images/cap1cha.jpg";//Π°Π½Π°Π½Π°Ρ $imgq[1] = "images/cap2cha.jpg";//Π±Π°Π½Π°Π½Ρ $imgq[2] = "images/cap3cha.jpg";//Π°ΡΠ±ΡΠ· $imgq[3] = "images/cap4cha.jpg";//ΡΠ±Π»ΠΎΠΊΠΎ for ($iall=0;$iall<4;$iall++)//Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° cods("ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°","Π½Π΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄","Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄","ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅","Π²ΠΎΠΏΡΠΎΡ","ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π»ΠΈ ΠΎΡΠ²Π΅Ρ") { for($i=0;$i<8;$i++)//ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈΠ· 8 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² { $simvol = chr(rand(97,122));//Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π»ΡΠ±ΠΎΠΉ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» $code[$i] = $simvol;//ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π² ΠΌΠ°ΡΡΠΈΠ² } $sort = rand(1,100);//ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π² ΠΊΠ°ΠΏΡΠ΅ (ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°) $code = implode("",$code);//ΡΠΊΠ»Π΅ΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ΄ ΠΈΠ· 8-ΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² $cods[$iall][0] = $sort;//Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ (ΡΠΎΡΡΠΈΡΠΎΠ²ΠΎΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ) $cods[$iall][1] = $code;//Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π½Π΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ $code = md5($code);//ΡΠΈΡΡΡΠ΅ΠΌ ΠΊΠΎΠ΄ $cods[$iall][2] = $code;//Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ $cods[$iall][3] = $imgq[$iall];//Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ $cods[$iall][4] = $q[$iall];//Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² ΠΌΠ°ΡΡΠΈΠ² Π²ΠΎΠΏΡΠΎΡ $cods[$iall][5] = "false";//ΡΠΈΠΊΡΠΈΡΡΡΡΡΡ ΡΡΠΎ Π²ΡΠ΅ ΠΎΡΠ²Π΅ΡΡ Π½Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅, ΠΌΡ Π΅ΡΠ΅ Π½Π΅ Π²ΡΠ±ΡΠ°Π»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ =) unset($code);//ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΠΌ ΠΊΠΎΠ΄ } rsort($cods);//ΡΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² $truepars = rand(0,3);//Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ (ΠΈΠ· 4-Ρ
ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ) $cods[$truepars][5] = "true";//ΠΌΠ΅Π½ΡΠ΅ΠΌ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ Ρ false Π½Π° true. Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ session_start();//ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ΅ΡΡΠΈΡ if($_SESSION['code'])unset($_SESSION['code']);//Π΅ΡΠ»ΠΈ ΠΊΠΎΠ΄ Π² ΡΠ΅ΡΡΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΠΌ Π΅Π³ΠΎ $_SESSION['code'] = $cods[$truepars][2];//Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΡΠ΅ΡΡΠΈΡ return $cods; } protected function getComm($error) { $stmt = $this->pdo->prepare("SELECT * FROM comm WHERE descript='$this->id' ORDER BY id DESC"); $stmt->execute(); $row = $stmt->fetch(); $sm_read_comm = file("templates/comm.html"); $sm_read_comm = implode("",$sm_read_comm); if( $row!="" ) { while( $row = $stmt->fetch() ) { printf($sm_read_comm,$row['author'],$row['date_comm'],$row['text']); } } else echo "<p>ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π½Π΅Ρ, Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠΌ</p>"; $form = file("templates/comm_form.html"); $form = implode("",$form); if($error != "")//Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ { $error = explode("|",$error); $this->echoERROR .= "<p style='color:red;margin:0px;'>ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ:</p>"; for($i=0;isset($error[$i]);$i++) { if($error[$i] != "")$this->echoERROR .= "<p style='color:red;margin:0px;'>>$error[$i]</p>"; } $form = sprintf($form,$this->echoERROR); } else $form = sprintf($form,""); for($i=0;$i<4;$i++) { $form = str_replace("[_code".$i."]",$this->cods[$i][1],$form);//Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ 4 ΠΊΠΎΠ΄Π° Π² ΡΠΎΡΠΌΡ $form = str_replace("[_img".$i."]",$this->cods[$i][3],$form);//Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ 4 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠΎΡΠΌΡ if($this->cods[$i][5] == "true")$form = str_replace("[_q]",$this->cods[$i][4],$form);//Π²ΠΊΠ»Π΅ΠΈΠ²Π°Π΅ΠΌ Π²ΠΎΠΏΡΠΎΡ Π² ΡΠΎΡΠΌΡ } //ΠΊΠ°ΠΏΡΠ° if($chpu == 0)$link = "index.php?option=main&id_descr=".$this->id;//...Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ else//ΠΡΠ»ΠΈ Π§ΠΠ£ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΡΠΎ { //Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΠΌΡ Π§ΠΠ£ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΏΠΎ id ΠΏΠΎΡΡΠ° $stmt = $this->pdo->prepare("SELECT nameurl FROM pop WHERE id='$descript'"); $stmt->execute(); $link = "descript/".$myrow_link['nameurl'];//ΡΠΊΠ»Π΅ΠΈΠ²Π°Π΅ΠΌ Π§ΠΠ£ } $form = str_replace("[_action]",$link,$form);//ΡΡΡΠ»ΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° $form = str_replace("[_id]",$this->id,$form); echo $form; } //--------------ΠΠΠ ΠΠΠΠ’Π§ΠΠ ΠΠΠΠΠΠ’ΠΠ ΠΠΠ protected function obr() { if(isset($_POST['id_comm']))$id_comm = $_POST['id_comm']; if(isset($_POST['txt_comm']))$txt_comm = $_POST['txt_comm']; if(isset($_POST['author_comm']))$author_comm = $_POST['author_comm']; if(isset($_POST['code_comm']))$code_comm = $_POST['code_comm']; $date_day = date("d"); $date_month = date("m"); $date_year = date("Y"); $date_time = date("H:i"); $date_comm = $date_day."/".$date_month."/".$date_year." ".$date_time; if($id_comm & $txt_comm & $author_comm & $code_comm) { $id_comm = htmlspecialchars($id_comm); $txt_comm = htmlspecialchars($txt_comm); if($code_comm != "") { session_start(); if( md5($code_comm) != $_SESSION['code'] )$this->error_comm .= "ΠΡ Π²ΡΠ±ΡΠ°Π»ΠΈ Π½Π΅ ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ!|"; unset($_SESSION['code']); session_destroy(); } else $error_comm .= "ΠΡ Π½Π΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ»ΠΈ, ΡΡΠΎ ΠΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ|"; if($author_comm != "" AND $author_comm != "ΠΠ²ΡΠΎΡ*") { if(!preg_match("/^[-_0-9a-zA-ZΠ°-ΡΠ-Π― ]+$/s",$author_comm))$this->error_comm .= "ΠΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΏΠΎΠ»Ρ 'ΠΠ²ΡΠΎΡ'|"; if(mb_strlen($author_comm) > 25)$this->error_comm .= "Π ΠΏΠΎΠ»Π΅ 'ΠΠ²ΡΠΎΡ' ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²|"; } else $this->error_comm .= "ΠΡ Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ 'ΠΠ²ΡΠΎΡ'|"; if($txt_comm == "" || $txt_comm == "ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡ*")$this->error_comm .="ΠΡ Π½Π΅ Π²Π²Π΅Π»ΠΈ ΡΠ΅ΠΊΡΡ!|"; if(!isset($this->error_comm)) { $id_comm = str_replace("'","'",$id_comm); $txt_comm = str_replace("'","'",$txt_comm); $txt_comm = str_replace("\n","<BR>",$txt_comm); //ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
$stmt = $this->pdo->prepare("INSERT INTO comm (author,text,date_comm,descript) VALUES ('$author_comm','$txt_comm','$date_comm','$id_comm')"); $stmt->execute(); if( !$stmt->execute() ) echo "ΠΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π² ΠΠ=("; header("location: ".getenv('HTTP_REFERER')); exit; } } } protected function getContent() { if($_GET['id_descr']) { $this->id = $_GET['id_descr']; $stmt = $this->pdo->prepare("SELECT * FROM pop WHERE id = '$this->id'"); $stmt->execute(); $row = $stmt->fetch(); if( $row!="" ) { $sm_read = file("templates/text.html"); $sm_read = implode("",$sm_read); echo "<div id='content'>"; printf($sm_read,$row['img'],$row['url'],$row['title'],$row['price'],$row['article'],$row['text']); //--------Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² self::getComm($this->error_comm); echo "</div>"; } else {echo "<div id='content'><h4 align='center'>Π’ΠΎΠ²Π°ΡΠ° Ρ Π΄Π°Π½Π½ΡΠΌ id Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.</div></h4>";}; } else { $sm_read_main = file("templates/main.html"); $sm_read_main = implode("",$sm_read_main); echo $sm_read_main; $sm_read_pop = file("templates/pop.html"); $sm_read_pop = implode("",$sm_read_pop); $stmt = $this->pdo->prepare("SELECT * FROM pop"); if(!$stmt->execute()) echo "<div id='content'><h4 align='center'>ΠΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΠΠ.</div></h4>"; while( $row = $stmt->fetch() ) { printf($sm_read_pop,$row['id'],$row['img'],$row['id'],$row['title'],$row['price']); } echo ' </div> </div> </div>'; } }