فیلترکردن ورودی ها

امین موسائی

کاربر عضو
سلام من با این کد ورودی های یک فرم را فیلتر کردم که کدهای html نتونه تاثیر بذاره

در حالت عادی که امتحانش میکنم جواب میده

ولی وقتی تو فرم قرار میدم کد html کار میکنه و اون کد در دیتابیس درج میشه


کد:
function Read($value)
    {
        $return1 = strip_tags($value);
        return $return1;
    }
 
آخرین ویرایش توسط مدیر:

william

کاربر عضو
کدتون درسته و نباید مشکلی داشته باشه.

به احتمال زیاد موقع استفاده از تابع تون یه جای کار رو اشتباه انجام دادید.

کد فرم و کد پردازش فرمتون رو قرار بدید تا مشکلتون بررسی بشه.

 

امین موسائی

کاربر عضو
سلام اینم کد فرم و پردازش

این کد برای نمایش هست


کد:
<?php

    if(!isset($_GET['id']))
    {
        $security->Redirect("news");
    }
    else
    {
        $id = $security->Check_ID($_GET['id']);
        $sql ="SELECT `title` , `short_text` , `long_text` FROM `tbl_news` WHERE `id`=:id ";
        $result = $connect->prepare($sql);
        $result->bindParam(":id",$id);
        $result->execute();
        while($rows=$result->fetch(PDO::FETCH_ASSOC))
        {
            $_SESSION['news_id'] = $security->Check_ID($id);
?>
</center>
<form id="form1" name="form1" method="post" action="check/edit_news.php">
  <table width="45%" align="center" dir="rtl">
    <tr>
      <td width="28%" align="center" class="form1">عنوان</td>
      <td width="72%" align="right">
       <input name="title_news" type="text" id="title" size="40" value="<?=$security->Read($rows['title']);?>"/></td>
    </tr>
    <tr>
      <td align="center" class="form1">متن کوتاه</td>
      <td align="right">
      <textarea name="short_text_news" id="short_text" cols="45" rows="5" ><?=$rows['short_text'];?></textarea></td>
    </tr>
    <tr>
      <td align="center" class="form1">متن خبر</td>
      <td align="right">
      <textarea name="long_text_news" id="textarea" cols="45" rows="5"  ><?=$rows['long_text'];?></textarea></td>
    </tr>
    <tr>
      <td colspan="2" align="center"><input type="submit" name="edit" id="edit" value="ویرایش" /></td>
    </tr>
  </table>
</form></td>
    <?php
        }
    }
        $security->Covering('inc_temp/menu');
    ?>
  </tr>
</table>
و این کد برای ویرایش


کد:
<?php
    include '../../object/connect.php';
    include '../../object/main.php';
    $security = new security ;

    if(isset($_POST['edit']))
    {
        $idnews = $_SESSION['news_id'];
        $sql ="UPDATE `tbl_news` SET `title` = :title , `short_text` = :short_text , `long_text` = :long_text WHERE `id` = :id ";
        $result = $connect->prepare($sql);
        $result->bindParam(':title',$_POST['title_news']);
        $result->bindParam(':short_text',$_POST['short_text_news']);
        $result->bindParam(':long_text',$_POST['long_text_news']);
        $result->bindParam(':id',$idnews);
        $res = $result->execute();
        if($res)
        {
            $security->Redirect("../news","update=4731");
        }
        else
        {
            $security->Redirect("../news","error=4781");
        }
    }
    else
    {
        $security->Redirect("../news");

    }
?>
 
آخرین ویرایش توسط مدیر:

william

کاربر عضو
در خط های 11 12 و 13:


کد:
$result->bindParam(':title',$_POST['title_news']);
$result->bindParam(':short_text',$_POST['short_text_news']);
$result->bindParam(':long_text',$_POST['long_text_news']);
در واقع شما مقادیر ورودی رو فیـلتر نکردید و مستقیم وارد دیتابیس می کنید. می تونید تبدیلش کنید به:


کد:
$result->bindParam(':title',$security->Read($_POST['title_news']));
$result->bindParam(':short_text',$security->Read($_POST['short_text_news']));
$result->bindParam(':long_text',$security->Read($_POST['long_text_news']));
 
بالا