• 18-06-2014, 16:28:15
    #1
    Var olan sayfamı düzenlemeye çalıştığımda işlem başarılı diyor ama herhangi bir değişiklik yapmıyor. Formdan veriler geliyor o konuda bir problem yok ama sanki sorgumda bir problem var kafa durdu iyice. Yardımcı olursanız sevinirim.

    	if (isset($_POST["save"])):
    		$update = $database->prepare('update tm_pages set title= :title, text= :text, catid= :catid, status= :status where id= :id');
    		$update->bindParam(':title', cleanMe($_POST['title']));
    		$update->bindParam(':text', cleanMe($_POST['text']));
    		$update->bindParam(':catid', cleanMe($_POST['catid']));
    		$update->bindParam(':status', cleanMe($_POST['status']));
    		$update->bindParam(':id', $id);
    		$update->execute();
    		if($update): header("Location:dashboard.php?section=pages&msg=success#pages");
    			else:
    			header("Location:dashboard.php?section=pages&msg=error#pages");
    		endif;
    	endif;
    cleanMe fonksiyonum

    function cleanMe($input) {
       $input = mysql_real_escape_string($input);
       $input = htmlspecialchars($input);
       $input = strip_tags($input);
       $input = stripslashes($input);
       return $input;
    }
  • 18-06-2014, 17:07:52
    #2
    if (isset($_POST["save"])):
    
       $update->bindParam(':title', cleanMe($_POST['title']));
       $update->bindParam(':text', cleanMe($_POST['text']));
       $update->bindParam(':catid', cleanMe($_POST['catid']));
       $update->bindParam(':status', cleanMe($_POST['status']));
       $update->bindParam(':id', $id);
       $update->execute();
       $update = $database->prepare('update tm_pages set title= :title, text= :text, catid= :catid, status= :status where id= :id');
       
       if($update): header("Location:dashboard.php?section=pages&msg=success#pages");
          else:
          header("Location:dashboard.php?section=pages&msg=error#pages");
       endif;
    endif;
  • 18-06-2014, 17:13:13
    #3
    msgr adlı üyeden alıntı: mesajı görüntüle
    if (isset($_POST["save"])):
    
       $update->bindParam(':title', cleanMe($_POST['title']));
       $update->bindParam(':text', cleanMe($_POST['text']));
       $update->bindParam(':catid', cleanMe($_POST['catid']));
       $update->bindParam(':status', cleanMe($_POST['status']));
       $update->bindParam(':id', $id);
       $update->execute();
       $update = $database->prepare('update tm_pages set title= :title, text= :text, catid= :catid, status= :status where id= :id');
       
       if($update): header("Location:dashboard.php?section=pages&msg=success#pages");
          else:
          header("Location:dashboard.php?section=pages&msg=error#pages");
       endif;
    endif;
    Sorunumu çözdüm. Save işlemi yaparken $id değerini alamıyormuşum gözümden kaçmış. Teşekkür ederim yinede.
  • 18-06-2014, 17:27:17
    #4
    loc adlı üyeden alıntı: mesajı görüntüle
    Sorunumu çözdüm. Save işlemi yaparken $id değerini alamıyormuşum gözümden kaçmış. Teşekkür ederim yinede.
    Size ufak bir tavsiye de vermek istiyorum. mysql_real_escape_string fonksiyonu php 4.10 sürümün de sikinti cikartabiliyor pdo ile.
    Bu yüzden addslashes(); fonksiyonunu kullanmanizi tavsiye ederim.
  • 18-06-2014, 17:52:12
    #5
    Selçuk adlı üyeden alıntı: mesajı görüntüle
    Size ufak bir tavsiye de vermek istiyorum. mysql_real_escape_string fonksiyonu php 4.10 sürümün de sikinti cikartabiliyor pdo ile.
    Bu yüzden addslashes(); fonksiyonunu kullanmanizi tavsiye ederim.
    Yazılımın kullanılacağı sunucu php 5 ve üzeri sürümde olduğu için gerek yok diye düşünüyorum ama yine de tavsiyen için teşekkür ederim
  • 18-06-2014, 17:53:24
    #6
    loc adlı üyeden alıntı: mesajı görüntüle
    Yazılımın kullanılacağı sunucu php 5 ve üzeri sürümde olduğu için gerek yok diye düşünüyorum ama yine de tavsiyen için teşekkür ederim
    Bahsettigim sürümü yanlis yazmisim hocam. PHP 5.4.10 idi.
  • 18-06-2014, 18:04:36
    #7
    PDO prepare kullananların cleanMe gibi bir fonksiyona hiç ihtiyacı yok.
  • 18-06-2014, 18:13:59
    #8
    soulmy adlı üyeden alıntı: mesajı görüntüle
    PDO prepare kullananların cleanMe gibi bir fonksiyona hiç ihtiyacı yok.
    Ne yalan konulayım prepare ne kadar güvenlidir ve ne kadar detaylı bir temizlik yapıyor bilmediğim için kullanıyorum. Direk $_POST verisini kullansam problem yaşamaz mıyım yani?
  • 18-06-2014, 18:22:38
    #9
    loc adlı üyeden alıntı: mesajı görüntüle
    Ne yalan konulayım prepare ne kadar güvenlidir ve ne kadar detaylı bir temizlik yapıyor bilmediğim için kullanıyorum. Direk $_POST verisini kullansam problem yaşamaz mıyım yani?
    prepare sadece SQL Injection saldirilari icin güvenli. HTML ve javascript kodlarini önlemiyor mesela.
    Eger javascript gb. cookie alabilecegi kodlari da istemiyor iseniz ek bir fonk. gerekli yada array_map(); fonk. ile $_POST degiskenleri strip_tags gibi fonk calistirip filtre yaparsiniz.