• 22-02-2022, 17:38:00
    #1
    Merhabalar,

    Öncelikle bir metin belgem mevcut bu metin belgemin içerisinde alt alta bazı yazılar yazılı ve bunların oyunda aktif olmaması başında noktalı virgül olup olmamasına bağlı;

    ;m4a1
    ;ak47
    ;usp
    glock
    NOT: Eğer başında noktalı virgül yoksa oyunda yasaklı noktalı virgül varsa oyunda yasaklı değildir.


    bu .ini dosyasının ismi weaprest.ini olsun ve bu .ini dosyasını internet sitemde ekrana şu şekilde içerisindekinleri okutarak yazdırıyorum;

                                                <?
                                                $dosya_icerigi = file_get_contents('../dosyayolu/dosyayolu/weaprest.ini');
                                                // PHP_EOL = satır ayracı. Explode ile satırlara ayırıyoruz.
                                                $satirlar = explode(PHP_EOL, $dosya_icerigi);
                                                // foreach ile satırlarda dolaşıyoruz.
                                                ?>
                                                <table class="table">
                                                    <thead class="thead-light">
                                                        <tr>
                                                        <th scope="col">Silah İsimleri</th>
                                                        <th scope="col">İŞLEM</th>
                                                        <th scope="col">DURUM</th>
                                                        </tr>
                                                    </thead>
                                                    <tbody>
                                                    <?
                                                        foreach($satirlar as $satir) {
                                                        if (!empty($satir)){
                                                    ?>
                                                        <tr>
                                                        <td><? echo $satir;?></td>
                                                        <td>
                                                            <button class="btn btn-primary btn-sm rounded-0" onclick="ekstra_eklenti('<? echo $satir;?>','silah','on');" type="button" data-toggle="tooltip" data-placement="top" title="AÇ"><i class="bi bi-toggle-on"></i> AÇ</button>
                                                            <button class="btn btn-info btn-sm rounded-0" onclick="ekstra_eklenti('<? echo $satir;?>','silah','off');" type="button" data-toggle="tooltip" data-placement="top" title="KAPAT"><i class="bi bi-toggle-off"></i> KAPAT</button>
                                                        </td>
                                                        <td><?
                                                        if($satir[0] === ';') {
                                                            echo '<div id="acik_'.$satir.'" class="btn btn-danger btn-sm">YASAKLI DEĞİL</div>';
                                                            echo '<div id="kapali_'.$satir.'" class="btn btn-success btn-sm" style="display:none">YASAKLI</div>';
                                                        }
                                                        else
                                                        {
                                                            echo '<div id="acik_'.$satir.'" class="btn btn-danger btn-sm" style="display:none">YASAKLI DEĞİL</div>';
                                                            echo '<div id="kapali_'.$satir.'" class="btn btn-success btn-sm">YASAKLI</div>';
                                                        }?></td>
                                                        </tr>
                                                        <?}}?>
                                                    </tbody>
    Bu işlemleri yaptık dan sonra sayfayı yenilemeden .txt dosyasından seçtiğim satırların başında noktalı virgülü kaldırıp koyuyorum kaldırıp koyma işleminden önce js kodunu paylaşayım;

    function ekstra_eklenti(eklenti_id,eklenti_turu,durums)
    {
                    $.ajax({
                        type: "POST",
                        url: "eklenti_uygula.php",
                        data: {
                            amxx: eklenti_id,
                            tip: eklenti_turu,
                            durum: durums,
                            durumtekrar: "acipkapama"
                        },
                        cache: false,
                        success: function(data) {
                            if (data=="OK")
                            {
                                if(eklenti_turu == "silah")
                                {
                                    if(durums == "on"){
                                        document.getElementById("acik_"+eklenti_id).style.display = "none";
                                        document.getElementById("kapali_"+eklenti_id).style.display = "";
                                    }else if(durums == "off"){
                                        document.getElementById("acik_"+eklenti_id).style.display = "";
                                        document.getElementById("kapali_"+eklenti_id).style.display = "none";
                                    }
                                }
    
                                if(eklenti_turu == "silah")
                                {
                                    $(document).ready(function(){
                                        toastr.success('Yasaklama işlemi güncellendi.');
                                    });
                                }
                            }
                            if (data=="NO")
                            {
                                $(document).ready(function(){
                                    toastr.error('Hata oldu sayfayı yenileyiniz!');
                                });
                            }
                        },
                        error: function(xhr, status, error) {
    
                                $(document).ready(function(){
                                    toastr.error('Hata oldu sayfayı yenileyiniz!');
                                });
    
                        }
                    });
    }
    BU Js kodu ile açıp kapatma butonlarına bastığım zaman eklenti_uygula.php dosyasından gelen NO - OK yazısına bağlı olarak div deki YASAKLI ya da YASAKLI DEĞİL yazısını değiştirebiliyorum buraya kadar sorun yok şimdi eklenti_uygula.php sayfasını paylaşayım;

            if($_POST)
            {
                if($_POST['durumtekrar'] == "acipkapama"){
                    $value =  $_POST['amxx'];
                    $type = $_POST['durum'];
                    $statuname = $value;
                    if($_POST['tip'] == "silah"){
                        $file = "../dosyayolu/dosyayolu/weaprest.ini";
                        $logyazdir = "SILAH YASAKLA";
                    }
                    $dosya_icerigi = file_get_contents($file);
    
                        if ($type == "on") {
                            $newfile = str_replace($value,str_replace(";",null,$value),$dosya_icerigi);
    
                        }
                        else if ($type=="off")
                        {
                            $newfile = str_replace($value,";".$value,$dosya_icerigi);
                        }
                        
                        file_put_contents($file, $newfile);
                        if($_POST['tip'] == "silah"){
                            $statu = ($type == "on")? "Yasaklandı!" : "Yasak Kaldırıldı!" ;
                            $log_adds = $sql->prepare("INSERT INTO pnluserlog SET pnl_user_id = ?, pnl_user_name = ?, pnl_user_serveripadress = ?, pnl_user_ipadress = ?, pnl_tarih = ?, pnl_log = ?");
                            $adss_log = $log_adds->execute(array($user_id,$username,$ipadress,$ipadresicik,$tarihcik,"<b>$statuname <u>($logyazdir)</u> $statu!</b>"));
                            echo "OK";
                        }
                }
            }
            else
            {
                echo "NO";
            }
    Şimdi bu işlemlerin olduğu sayfayı yeniliyorum ve örnek veriyorum M4A1 silahına aç tuşuna basıyorum ve otomatik olarak sayfa yenilenmeden başındaki noktalı virgül kalkıyor ve div güncelleniyor aynı şekilde kapat tuşuna bastığım zaman m4a1 silahının başına .ini dosyasında tekrar noktalı virgül koyuyor ama ard arda kapat tuşuna bastığım zaman .ini dosyasında m4a1 yazısının önüne kapat tuşuna bastığım kadar noktalı virgül koyuyor ve aç tuşuna bastığım zaman o m4a1 yazsının başındaki noktalı virgüllerinin hepsini silmesi gerekirken silmiyor ancak sayfayı yenilediğim zaman siliyor bunun sebebide sayfayı yenilediğim zaman tablodaki onclick içerisindeki satır kısmı tekrar okunduğu için aç tuşuna bastığım zaman m4a1 yazısının önündeki tüm noktalı virgüller sorunsuz siliniyor biraz uzun anlatmış olabilirim arkadaşlar ama ben bunu nasıl yapabilirim sanırım bizim işimiz sadece burada;

                        if ($type == "on") {
                            $newfile = str_replace($value,str_replace(";",null,$value),$dosya_icerigi);
    
                        }
    Anlamanız için uzun uzun anlattım umarım yardım olabilirsiniz.
  • 22-02-2022, 17:55:41
    #2
    Hocam ilk olarak başında noktalı virgül olup olmadığını kontrol etmeniz lazım.
    Onun için de
    if($deger[0]!=';'){
    //deger'in başı ; değilse işlem yap.
    }
  • 22-02-2022, 18:07:34
    #3
    PhYtOnX adlı üyeden alıntı: mesajı görüntüle
    Hocam ilk olarak başında noktalı virgül olup olmadığını kontrol etmeniz lazım.
    Onun için de
    if($deger[0]!=';'){
    //deger'in başı ; değilse işlem yap.
    }
    Maalesef bu işe yaramayacaktır sorguyu yaptırsam m4a1 in başındaki noktalı virgülü her türlü kaldırması gerekiyor
  • 22-02-2022, 18:08:26
    #4
    Ek olarak ltrim komutu işime yarıyor fakat bunun dosyanın içerisinde o satıra nasıl yazacağım maalesef bilmiyorum
  • 23-02-2022, 14:30:28
    #5
    Diğer konunuza istinaden buradaki yapınız üzerinden nasıl olması gerektiğini hazırlayacağım.

    Pardon oyun dosyası olduğunu yeni gördüm.
    Tamam virgül üzerinden gideriz
  • 23-02-2022, 15:36:12
    #6
    <?php
    $file_path = 'weaprest.ini';
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        header('Content-type: application/json');
    
        $array = array();
        $buffer = file_get_contents($file_path);
        foreach (explode(PHP_EOL, $buffer) as $str) {
            if (empty($str)) continue;
            $off = (substr($str, 0, 1) == ';');
            $displayname = ($off ? substr($str, 1) : $str);
    
            if ($displayname == $_POST['displayname']) {
                $array[] = $_POST['status'] . $displayname;
    
                //$log_adds = $sql->prepare("INSERT INTO pnluserlog SET pnl_user_id = ?, pnl_user_name = ?, pnl_user_serveripadress = ?, pnl_user_ipadress = ?, pnl_tarih = ?, pnl_log = ?");
                //$log_adds->execute(array($user_id, $username, $ipadress, $ipadresicik, $tarihcik, "<b>$displayname <u>($logyazdir)</u> $statu!</b>"));
            } else {
                $array[] = $str;
            }
        }
    
        file_put_contents($file_path, join(PHP_EOL, $array));
    
        exit(json_encode(array('result' => true)));
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    </head>
    <body>
        <table class="table">
            <thead class="thead-light">
                <tr>
                <th scope="col">Silah İsimleri</th>
                <th scope="col">İŞLEM</th>
                <th scope="col">DURUM</th>
                </tr>
            </thead>
            <tbody>
                <?php
                    $buffer = file_get_contents($file_path);
                    foreach (explode(PHP_EOL, $buffer) as $str) {
                        if (empty($str)) continue;
    
                        $off = (substr($str, 0, 1) == ';');
                        $displayname = ($off ? substr($str, 1) : $str);
    
                        echo '<tr>';
                        echo '<td>' . $displayname . '</td>';
                        echo '<td><button class="btn btn-' . ($off ? 'primary' : 'info') . ' btn-sm" data-toggle="tooltip" data-placement="top" title="' . ($off ? 'Aç' : 'Kapat') . '" data-displayname="' . $displayname . '"><i class="bi bi-toggle-on"></i> <span>' . ($off ? 'Aç' : 'Kapat') . '</span></button></td>';
                        echo '<td><div class="badge badge-' . ($off ? 'danger' : 'success') . '">' . ($off ? 'YASAKLI' : 'YASAKLI DEĞİL') . '</div></td>';
                        echo '</tr>';
                    }
                ?>
            </tbody>
        </table>
    
        <script src="https://code.jquery.com/jquery-1.11.3.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
        <script>
            $(function(){
                $(".btn").click(function(){
                    let $btn = $(this);
                    let $badge = $(this).parents("tr").find(".badge");
                    $.ajax({
                        url: "",
                        type: "POST",
                        dataType: "JSON",
                        data: {
                            type: "silah",
                            displayname: $btn.data("displayname"),
                            status: ($btn.hasClass("btn-primary") ? "" : ";")
                        },
                        success: function(json){
                            if (json.result) {
                                if ($btn.hasClass("btn-primary")) {
                                    $btn.attr("class", "btn btn-info btn-sm").attr("title", "Kapat").find("span").text("Kapat");
                                    $badge.attr("class", "badge badge-success").text("YASAKLI DEĞİL");
                                } else {
                                    $btn.attr("class", "btn btn-primary btn-sm").attr("title", "Aç").find("span").text("Aç");
                                    $badge.attr("class", "badge badge-danger").text("YASAKLI");
                                }
                            }
                        }
                    });
                });
            });
        </script>
    </body>
    </html>