Код голосования PHP работает на 5.2.5, но больше не на 5.2.11 - PullRequest
0 голосов
/ 15 декабря 2009

Хорошо, поэтому некоторое время назад у меня была некоторая помощь в написании кода для голосования на PHP, он прекрасно работал после того, как я обновил свой сервер для использования последней версии PHP. Однако теперь я переключил серверы, и PHP не так обновлен, как другие. В любом случае вот мой код:

<?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;
}
?>

Выполнить и отобразить:

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

Теперь, когда на моем другом сервере (версия PHP 5.2.5) этот код работал отлично! Однако на моем новом сервере версия PHP 5.2.11, и из-за этого код не будет работать. У меня вопрос: есть ли способ сделать это более совместимым с более ранней версией PHP или написать совершенно новый код, который будет работать так же, как этот? Или есть ли способ заставить мои серверы использовать PHP 5.2.5+? Я использую панель администратора cPanel X.

Я установил разрешения для текстового файла на 777 и все еще ничего!

Ответы [ 2 ]

3 голосов
/ 15 декабря 2009

вы проверяете переменную "click", но выполняете код, только если он равен "up1".

Но ваша ссылка говорит, что щелчок равен "да", так что часть кода никогда не верна, следовательно, никогда не выполняется.

Измените вашего исполнителя на это:

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

Но более логично, ваш код обработки должен быть немного рационализирован к этому:

если ссылка нажата: Во-первых, если файл данных (lu.txt) не существует, создайте его и напишите в нем «+1», иначе добавьте 1 к его существующему значению.

Затем перенаправляет на начальную страницу.

 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;
0 голосов
/ 15 декабря 2009

Неплохая идея добавить trim () вокруг file_get_contents (). Или проверить, установлен ли $ _GET ['click'] isset () перед проверкой, равен ли он 'up1'.

После редиректа заголовка принято выходить () вместо die () - ну, по крайней мере из того, что я видел.

В основном, во время разработки, включайте отчеты об ошибках и устанавливайте свой флаг ошибок в E_ALL, чтобы видеть все, включая предупреждения и уведомления - ни один из которых не останавливает ваш код, но все же должен быть известен и устранен.

Вы можете выяснить причину, по которой ваш код приводит к разным результатам в разных второстепенных версиях PHP, включив полный отчет об ошибках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...