Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не хочет работать

49K
06 августа 2009 года
MeLord
13 / / 06.08.2009
Есть код
Код:
<?php
if (empty($_POST[grabfile]) or empty($_POST[grabimage])) {
?>
<form method=post>
Grab file: <input type=text name="grabfile"><br>
Grab image: <input type=text name="grabimage"><br>
<input type=submit value=grab!>
</form>
<?php
} else {
    $grabfile = $_POST["grabfile"];
    $grabimage = $_POST["grabimage"];
    if (strlen($grabfile) || strlen($grabimage)) {
    // Get directories info
    $gamedirectory = "../files/".$filesdir."/";
    $imagedirectory = "../files/image/";
   
    if ($grabfile) {
        // Get game file name
        $gname = $grabfile;
        while(strstr($gname,"/")){
            $gname = substr($gname,strpos($gname,"/")+1,999);
        }
        $newgame = $gamedirectory.$gname;
 
        // If file already exists then change it's name
        if (file_exists($newgame)) {
            $uniq = substr( md5(uniqid (rand())), 0, 4 );
            $gname = $uniq."_".$gname;
            $newgame = $gamedirectory.$gname;
        }
        if (copy($grabfile, $newgame)) {
            $files = "&gfile=".$gname;
 }
 }
 if (strlen($grabimage)) {
        // Get game file name
        $gimage = $grabimage;
        while(strstr($gimage,"/")){
            $gimage = substr($gimage,strpos($gimage,"/")+1,999);
        }
        $newimage = $imagedirectory.$gimage;
 
        // If file already exists then change it's name
        if (file_exists($newimage)) {
            $uniq = substr( md5(uniqid(rand())), 0, 4 );
            $gimage = $uniq."_".$gimage;
            $newimage = $imagedirectory.$gimage;
        }
        if (copy($grabimage, $newimage)) {
            $images = "&gimage=".$gimage;
 }
 }
 if (strlen($files) || strlen($images)) {
    * * header ("Location: /admin/index.php?action=addgame".$files.$images);
     exit();
 } else {
     header ("Location: index.php?action=grabfile&e=1");
     exit();
 }
 }
    header ("Location: index.php?action=grabfile");
    exit();
}
?>


Под денвером работал на ура, а как загузил на хост так не работает. Ни одно условие не проходит.
Как вы думаете в чем причина?
244
06 августа 2009 года
UAS
2.0K / / 19.07.2006
Денвер на 3 буквы.

1) if (empty($_POST[grabfile]) or empty($_POST[grabimage])) {
У вас тут где-то предопределены константы grabfile и grabimage?

2) Аттрибуты тегов надо заключать в кавычки и закрывать непарные теги

3) * * header ("Location: /admin/index.php?action=addgame".$files.$images);
Че за звездочки?

4) $grabfile = $_POST["grabfile"] - убил бы. А где проверка, что есть такой элемент в массиве?

5) А ещё полезно в начале скрипта писать error_reporting(E_ALL), чтобы самому видеть ошибки.
2
07 августа 2009 года
squirL
5.6K / / 13.08.2003
а еще - за такую мешанину HTML и PHP кода надо убивать ржавым ножом...
244
07 августа 2009 года
UAS
2.0K / / 19.07.2006
squirL, к сожалению, в виду популярности PHP, я думаю, такое встречается везде и уже часто)
Я тут подрабатывал доработкой чужик самописных проектов - это лучше вешаться. То, что тут написано - это ещё красиво написано))
49K
07 августа 2009 года
MeLord
13 / / 06.08.2009
заменил все strlen'ы на isset(), сделал проверку существования элемента в массиве.
Цитата:
3) * * header ("Location: /admin/index.php?action=addgame".$files.$images);
Че за звездочки?


Этого не было в коде...

Цитата:
5) А ещё полезно в начале скрипта писать error_reporting(E_ALL), чтобы самому видеть ошибки.


Написал, ни чего не показывает.

Цитата:
а еще - за такую мешанину HTML и PHP кода надо убивать ржавым ножом...


Мешанины не было, я просто чтоб вам показать так написал, вообще код находиться в админке.
Все равно не хочет работать:

Код:
<?php
error_reporting(E_ALL);
if (empty($_POST['grabfile']) or empty($_POST['grabimage'])) {
?>
<form method='post'>
Grab file: <input type='text' name='grabfile'><br>
Grab image: <input type='text' name='grabimage'><br>
<input type='submit' value='grab!'>
</form>
<?php
} else {
if (isset($_POST['grabfile']) and isset($_POST['grabimage'])) {
    $grabfile = $_POST['grabfile'];
    $grabimage = $_POST['grabimage'];
    }
    if (isset($grabfile) || isset($grabimage)) {
    // Get directories info
    $gamedirectory = "../files/".$filesdir."/";
    $imagedirectory = "../files/image/";
   
    if (isset($grabfile)) {
        // Get game file name
        $gname = $grabfile;
        while(strstr($gname,"/")){
            $gname = substr($gname,strpos($gname,"/")+1,999);
        }
        $newgame = $gamedirectory.$gname;
   
        // If file already exists then change it's name
        if (file_exists($newgame)) {
            $uniq = substr( md5(uniqid (rand())), 0, 4 );
            $gname = $uniq."_".$gname;
            $newgame = $gamedirectory.$gname;
        }
        if (copy($grabfile, $newgame)) {
            $files = "&gfile=".$gname;
        }
    }
    if (isset($grabimage)) {
        // Get game file name
        $gimage = $grabimage;
        while(strstr($gimage,"/")){
            $gimage = substr($gimage,strpos($gimage,"/")+1,999);
        }
        $newimage = $imagedirectory.$gimage;
   
        // If file already exists then change it's name
        if (file_exists($newimage)) {
            $uniq = substr( md5(uniqid(rand())), 0, 4 );
            $gimage = $uniq."_".$gimage;
            $newimage = $imagedirectory.$gimage;
        }
        if (copy($grabimage, $newimage)) {
            $images = "&gimage=".$gimage;
        }
    }
    if (isset($files) || isset($images)) {
        echo 'header ("Location: /admin/index.php?action=addgame".$files.$images)';
        exit();
    } else {
        echo 'header ("Location: index.php?action=grabfile&e=1")';
        exit();
    }
    }
    echo 'header ("Location: index.php?action=grabfile")';
    exit();
}
?>
244
07 августа 2009 года
UAS
2.0K / / 19.07.2006
 
Код:
if (empty($_POST['grabfile']) or empty($_POST['grabimage'])) {
...
} else {  
if (isset($_POST['grabfile']) and isset($_POST['grabimage'])) {
Логику лишнюю видите?) Условие второго if поставьте в первый. И удалите второй if.

Цитата:
echo 'header ("Location: index.php?action=grabfile&e=1")';


:D:D:D
А это зачем поменяли?) Верните функцию header, как было.

Да и код после наших замечаний лучше не стал, только ещё замудреней))
И ещё вопрос. Че не работает-то?

285
07 августа 2009 года
Romik
479 / / 24.11.2002
судя по жалобе о том, что перестало работать после перехода с денвера на хсотинг, речь идёт об относительном пути к файлу, что якобы заранее должен быть загружен на хостинг.
49K
07 августа 2009 года
MeLord
13 / / 06.08.2009
Цитата:
А это зачем поменяли?) Верните функцию header, как было.


Протсто так легче отлаживать.

Цитата:
И ещё вопрос. Че не работает-то?

Не проходит условия.

Код:
<?php  
error_reporting(E_ALL);
if (!isset($_POST['grabfile']) and !isset($_POST['grabimage'])) {
?>  
<form method='post'>
Grab file: <input type='text' name='grabfile'><br>
Grab image: <input type='text' name='grabimage'><br>
<input type='submit' value='grab!'>  
</form>
<?php
} else {  
    $grabfile = $_POST['grabfile'];
    $grabimage = $_POST['grabimage'];
    }
    if (isset($grabfile) || isset($grabimage)) {
    // Get directories info
    $gamedirectory = "../files/".$filesdir."/";
    $imagedirectory = "../files/image/";
     
    if (isset($grabfile)) {
        // Get game file name
        $gname = $grabfile;  
        while(strstr($gname,"/")){  
            $gname = substr($gname,strpos($gname,"/")+1,999);  
        }  
        $newgame = $gamedirectory.$gname;
     
        // If file already exists then change it's name
        if (file_exists($newgame)) {
            $uniq = substr( md5(uniqid (rand())), 0, 4 );
            $gname = $uniq."_".$gname;
            $newgame = $gamedirectory.$gname;  
        }
        if (copy($grabfile, $newgame)) {  
            $files = "&gfile=".$gname;
        }
    }
    if (isset($grabimage)) {
        // Get game file name
        $gimage = $grabimage;  
        while(strstr($gimage,"/")){  
            $gimage = substr($gimage,strpos($gimage,"/")+1,999);  
        }  
        $newimage = $imagedirectory.$gimage;
     
        // If file already exists then change it's name
        if (file_exists($newimage)) {
            $uniq = substr( md5(uniqid(rand())), 0, 4 );
            $gimage = $uniq."_".$gimage;
            $newimage = $imagedirectory.$gimage;  
        }
        if (copy($grabimage, $newimage)) {  
            $images = "&gimage=".$gimage;
        }
    }
    if (isset($files) || isset($images)) {
        header ("Location: /admin/index.php?action=addgame".$files.$images);
        exit();
    } else {
        header ("Location: index.php?action=grabfile&e=1");
        exit();
    }
    }
    header ("Location: index.php?action=grabfile");
    exit();
}
?>
444
07 августа 2009 года
patison
323 / / 15.03.2007
Цитата: MeLord
Протсто так легче отлаживать.
Не проходит условия.


Т.е. ни при каких обстоятельствах не показывает форму?

244
07 августа 2009 года
UAS
2.0K / / 19.07.2006
Короче, предлагаю проверить пути. А ещё тупо делайте echo() после каждой строчки. Т.е. так называемый дебаг. И смотрите каково значение переменной? Учитесь изучать свой код и проверять.
49K
08 августа 2009 года
MeLord
13 / / 06.08.2009
последовав вашему совету, я начал просталять echo(). И тут выяснилось что почему то просто не работает функция copy(). Есть ли замена ему?
244
08 августа 2009 года
UAS
2.0K / / 19.07.2006
Нет, нету замены.
Если не работает, значет нет прав на запись в ту директорию, куда вы хотите переместить. Про права в *nix системах можно почитать в инете.
49K
08 августа 2009 года
MeLord
13 / / 06.08.2009
про права на запись знаю итак, на директории записи поставлены chmod 777.
244
08 августа 2009 года
UAS
2.0K / / 19.07.2006
Стандартная функция не может не работать, только если хостер не намутил, что очень маловероятно. Значит проблема или в правах файлов или в путях к ним.
Так что советую последовать совету Romik и посмотреть те ли пути передаются в copy и соблюдается ли регистр символов в имене файлов. Ошибка 99.99% в вашем коде, т.е. в этой части. Так что ищите.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог