• 19-11-2015, 22:05:19
    #1
    arkadaşlar merhaba küçük bir sorum var


    $title = $_POST['title'];

    ile post ettiğim formdan gelen başlığı

    mkdir($title);

    ile klasör açtırınca karakter hatası alıyorum öğrenmek için beni yönlendirirmisiniz? post edilen başlığı klasör açtırırken karakter hatasının önüne nasıl geçerim. şimdiden teşekkürler.
  • 19-11-2015, 22:09:23
    #2
    preg_replace kullanarak regex ile windowsun istemediği karakterleri değiştirebilirsiniz ya da yine aynı şekilde
    $metin = $_POST['title'];
    $array = array("'",":",";","/");
    $replace = str_replace($array,"",$metin);

    yapabilirsiniz.
  • 19-11-2015, 22:30:39
    #3
    hocam mantığı anlamam açısından değerli vaktinizden ayırmanızı istesem bana örnek bir kodlama yaparmısınız lütfen çünkü denedim başarısız oldum demekki anlayamamışım.


    bunları
    ('ı','ş','ü','ç','ö','ğ','Ç','Ş','Ü','İ','Ğ','Ö');

    bunlara çevirecek
    ('i','s','u','c','o','g','C','S','U','I','G','O');

    xFactoria adlı üyeden alıntı: mesajı görüntüle
    preg_replace kullanarak regex ile windowsun istemediği karakterleri değiştirebilirsiniz ya da yine aynı şekilde
    $metin = $_POST['title'];
    $array = array("'",":",";","/");
    $replace = str_replace($array,"",$metin);

    yapabilirsiniz.
  • 19-11-2015, 22:41:18
    #4
    Üyeliği durduruldu
    	function trle($url)
    	{
        $trharf=array("İ","Ş"," ","Ü","Ç","Ğ","Ö","ı","ş","ü","ç","ğ","ö");
        $trharfdegis=array("I","S","-","U","C","G","O","i","s","u","c","g","o");
        $url=str_replace($trharf,$trharfdegis,$url);
        $url=preg_replace("@[^A-Za-z0-9\-_]+@i","",$url);
        $url = trim($url);
        $url = strtolower($url);
        $find = array('<b>', '</b>');
        $url = str_replace ($find, '', $url);
        $url = preg_replace('/<(\/{0,1})img(.*?)(\/{0,1})\>/', 'image', $url);
        $find = array(' ', '&quot;', '&amp;', '&', '\r\n', '\n', '/', '\\', '+', '<', '>');
        $url = str_replace ($find, '-', $url);
        $find = array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ë', 'Ê');
        $url = str_replace ($find, 'e', $url);
        $find = array('í', 'ì', 'î', 'ï', 'I', 'Í', 'Ì', 'Î', 'Ï');
        $url = str_replace ($find, 'i', $url);
        $find = array('ó', 'ö', 'Ö', 'ò', 'ô', 'Ó', 'Ò', 'Ô');
        $url = str_replace ($find, 'o', $url);
        $find = array('á', 'ä', 'â', 'à', 'â', 'Ä', 'Â', 'Á', 'À', 'Â');
        $url = str_replace ($find, 'a', $url);
        $find = array('ú', 'ü', 'Ü', 'ù', 'û', 'Ú', 'Ù', 'Û');
        $url = str_replace ($find, 'u', $url);
        $find = array('ç', 'Ç');
        $url = str_replace ($find, 'c', $url);
        $find = array('?', '!', '$', '#', '+');
        $url = str_replace ($find, '-', $url);
        $find = array('ğ', 'Ğ');
        $url = str_replace ($find, 'g', $url);
        $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
        $repl = array('', '-', '');
        $url = preg_replace ($find, $repl, $url);
        $url = str_replace('--', '-', $url);
    	$url = trim($url,"-");
        return $url;
    	}  
    
    
    $klasor = trle($_POST['title']);
    mkdir($klasor);
    Bu şekilde kullanabilirsiniz.
  • 19-11-2015, 23:04:13
    #5
    dewadam adlı üyeden alıntı: mesajı görüntüle
    hocam mantığı anlamam açısından değerli vaktinizden ayırmanızı istesem bana örnek bir kodlama yaparmısınız lütfen çünkü denedim başarısız oldum demekki anlayamamışım.


    bunları
    ('ı','ş','ü','ç','ö','ğ','Ç','Ş','Ü','İ','Ğ','Ö');

    bunlara çevirecek
    ('i','s','u','c','o','g','C','S','U','I','G','O');
    İşletim sistsemi klasör açarken bazı karakterleri kabul etmez, bunun sebebi güvenlik açığı oluşturabiliyor olmalarıdır.PHP ile bu engeli geçmek için yapmanız gereken işletim sisteminin izin vermediği harfleri, işaretleri silmek yada yerine farklı şeyler koymaktır.Benim verdiğim kod işin basit tarafıydı.Bunun yanında bazı karakter setlerini de klasör isminde kabul etmiyor.Yukarıdaki arkadaşın verdiği fonksiyonu kullanırsanız böyle bir sorununuz kalmayacaktır büyük ihtimal.Sizin verdiğiniz harfler klasör açmaya bir engel değil

    Fonksiyonu nasıl kullanacağınızı bilmiyorsanız kısaca açıklayabilirim;
    POST ettiğiniz sayfaya bu fonksiyonu en üste yazın / kaydedin.Daha sonra
    $baslik = trle($_POST['title');
    mkdir("/dokumanlar/{$baslik}", 0777, true);
    demeniz yeterlidir.
  • 20-11-2015, 09:15:00
    #6
    türkce karakterleri temizleyin ve kodlama diliniz utf8 olsun