PHP oylama kodu artık 5.2.5 değil 5.2.11 üzerinde çalışır

2 Cevap

Ben PHP'nin son sürümünü kullanmak için sunucu yükseltilmiş sonra Tamam, bu yüzden biraz geri bazı PHP oylamaya kod yazarken biraz yardım vardı, gayet güzel çalıştı. Ancak şimdi sunucuları açtınız, ve PHP gibi güncel diğeri gibi değildir. Zaten burada benim kod:

<?php
if(!file_exists('vote/1u.txt')){
file_put_contents('vote/1u.txt', '+1');
}
if($_GET['click'] == 'up1'){
file_put_contents('vote/1u.txt', ((int) file_get_contents('vote/1u.txt')) + 1);
header('Location: ' . $_SERVER['SCRIPT_NAME']);
die;
}
?>

Yürütme ve ekran:

<a href="?click=up1"><img src="images/thumbsup.jpg" width="40px"border="0">            </a><br>Votes: <?php echo file_get_contents('vote/up1.txt'); ?>

Şimdi benim başka bir sunucuya (PHP version 5.2.5) Bu kod amele büyük! Ancak benim yeni sunucuda PHP sürümü 5.2.11 olduğunu ve bu nedenle kod çalışmaz. Sorum PHP önceki bir sürümü ile bu daha uyumlu hale getirmek için, ya da sadece bu gibi çalışacak tamamen yeni bir kod yazmak için herhangi bir yolu var mı, nedir? Veya PHP 5.2.5 + kullanmak benim sunucuları anlamanın bir yolu var mı? Ben cPanel X admin paneli kullanıyorum.

I have set the text file permissions to 777 and still nothing!

2 Cevap

Eğer "tıklayın" değişkeni kontrol ama "UP1" eşittir sadece kod yürütme.

Kodun bir kısmının dolayısıyla idam asla, asla doğru değildir böylece Ama sizin bağlantı "evet" eşitler tıklayın söyler.

Bu için uygulamakla değiştirin:

<a href="?click=up1"><img src="images/thumbsup.jpg" width="40px"border="0">            </a><br>Votes: <?php echo file_get_contents('counteru.txt'); ?>

Ama daha mantıklı, sizin işlem kodu bu biraz rasyonalize edilmelidir:

if the link is clicked : First, if the data file (lu.txt) does not exist, create it and write '+1' inside of it, else, add 1 to its existing value.

Ardından, ilk sayfaya yönlendirir.

 if($_GET['click'] == 'up1'){
        if(!file_exists('vote/1u.txt')){
            file_put_contents('vote/1u.txt', '+1');
        }else{
            $content = file_get_contents('vote/1u.txt');
            if(!$content){
                  die("Error! file_get_content failed !");
            }
            file_put_contents('vote/1u.txt', ((int)$content) + 1);
        }
    header('Location: ' . $_SERVER['SCRIPT_NAME']);
    }

    exit;

Değil file_get_contents etrafında bir süs () () eklemek için kötü bir fikirdir. Veya kontrol etmek eğer önce o UP1 'eşit olmadığını kontrol için $ _GET [' tıklayın '] isset ().

Iyi, ben en azından ne gördüm - Bu bir başlık yönlendirme sonra () yerine kalıbın () çıkmak için konvansiyonel bulunuyor.

Temelde, gelişimi sırasında, hata raporlama açmak ve uyarılar ve bilgiler de dahil olmak üzere her şeyi görmek için E_ALL için hata bayrağı ayarlamak - kodunuzu durdurmak ikisi de, ama yine de bilinen ve ele alınmalıdır.

Kodunuzu tam hata raporlama çevirerek PHP farklı minör sürümleri altında farklı sonuçlar üretir nedeni keşfetmek olabilir.