За последние 24 часа нас посетили 23560 программистов и 1560 роботов. Сейчас ищут 892 программиста ...

При переходе на хостинг перестал узнавать переменные.

Тема в разделе "PHP для новичков", создана пользователем SamyRed, 31 июл 2015.

  1. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Доброго времени суток!
    Появилась проблема при переходе с локального сервера на хостинг в интернете. Всё вроде перенастроил, всё норм, только выдаёт ошибку, типа неопознанные переменные:
    http://joxi.ru/xAe0qb4sDOn72y
    На локалке всё нормально было. Вот код:
    Код (PHP):
    1. <?php
    2.     session_start();    
    3.     include('handlers/db.php');
    4.     
    5. if (isset($_POST['delete_comment_x']) or isset($_POST['delete_comment_y']))
    6.     if($_SESSION['user_access_level'] == 'admin')
    7.     mysql_query ("DELETE  FROM `news_comments` WHERE `id` = '{$_POST['comment_id_delete']}';");
    8.         
    9. if (isset($_POST['add_coment'])){
    10.     if(isset($_POST['coment_text']) and !empty($_POST['coment_text'])){
    11.     $comment_text = htmlspecialchars($_POST['coment_text']);
    12.     setcookie("news_comment", $comment_text);
    13.     setcookie("new_title", $_GET['title']);
    14.     setcookie("news_id", $_GET['id']);
    15.     setcookie("full_new", $_GET['full_new']);
    16.     setcookie("new_add_user_login", $_GET['user_login']);
    17.     setcookie("new_create_date", $_GET['create_date']);
    18.     header("Location: handlers/comments_loader.php");    
    19.     }
    20.     else
    21.         $comment_empty = 1;
    22. }
    23. ?>
    24. <html>
    25.     <head>
    26.     <title>SR-Craft.com</title>
    27.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    28.     <link rel="stylesheet" type="text/css" href="css/styles.css"/>
    29.     <link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon">
    30.     <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    31.     </head>
    32.     <body>
    33.                         <?php 
    34.                         include 'blocks/header.php';
    35.                         include 'blocks/menu.php';
    36.                         ?>
    37.             <div style="padding-top:5px" class="block1 block_L">    
    38.                             <div style="margin-top:10px" class="block2">
    39.                     <?php                
    40.                     $id = $_GET['id'];
    41.                     $title = $_GET['title'];
    42.                     $full_new = $_GET['full_new'];
    43.                     $create_date = $_GET['create_date'];
    44.                     $user_login = $_GET['user_login'];
    45.                     if (isset($id))
    46.                     echo '
    47.                         <span class="title1">'.$title.'</span></br>
    48.                         <div style="background:#FFFAF0; border:1px solid #F5DEB3; margin:15px 30px 0 30px; padding:0 10px 0 10px"><span style="padding:0; margin:0"><textarea style="padding:0; margin:0" class="full_new" readonly>'.$full_new.'</textarea></div>
    49.                         <span style="font-size:12px; line-height:18px; color:grey;">Добавил '.$user_login.' '.$create_date.'</span></br>
    50.                     ';
    51.                     if ($_SESSION['user_access'] == 1)
    52.                     echo '
    53.                         <div>
    54.                         </br><span style="font-size:18px; " class="title1">Добавление коментариев:</span>
    55.                     ';
    56.                     else echo '</br><span style="font-size:20px; color:#4F4F4F";>Зарегистрирйтесь или войдите чтобы оставлять коментарии.</span>';
    57.                     if ($comment_empty == 1)echo'<span style="color:red" class="text1">Вы не ввели коментарий</span>';
    58.                     if ($_SESSION['user_access'] == 1)
    59.                     echo'
    60.                         <form action="" method="post">
    61.                         <textarea name="coment_text" style="font-family: times new roman; font-size:16px; background:#FFFAF0; border:1px solid #F5DEB3; resize: none; width:350px; height:80px; padding:5px 10px 5px 10px; margin: 10px 0 0 0;"></textarea>
    62.                         </br><input name="add_coment" type="submit" class="button" value="Отправить"></input>
    63.                         </form>
    64.                         </div>
    65.                     ';
    66.                     ?>
    67.                     </br><div>
    68.                     <?php            
    69.                     $res=mysql_query("SELECT * FROM `news_comments` ORDER BY `id` DESC");
    70.                     while($myrow=mysql_fetch_array($res))    
    71.                     {
    72.                     if($myrow['new_id'] == $id){
    73.                     echo '
    74.                         <div style="border:1px solid #F5DEB3; padding:5px 0 0 5px; margin:20px 0 5px 0">
    75.                     ';}
    76.                     if($myrow['new_id'] == $id)    
    77.                         if ($_SESSION['user_access_level'] == 'admin')
    78.                             echo '
    79.                             <form style="padding:0" action="" method="post">
    80.                             <input type="hidden" name="comment_id_delete" value="'.$myrow['id'].'"></input>
    81.                             <input type="image" name="delete_comment" style="padding:0; margin:0 0 5px 10px; cursor:pointer;" title="Удалить комментарий" src="images/delete.png"></input></br>
    82.                             </form>
    83.                         ';
    84.                     if($myrow['new_id'] == $id)
    85.                     echo '
    86.                         <span style="font-size:18px; padding:0">'.$myrow['text'].'</span></br>
    87.                         <span class="text1" style="font-size:12px; line-height:20px; padding:0">Добавил '.$myrow['user_login'].' '.$myrow['create_date'].'</span>
    88.                         </div>
    89.                     ';
    90.                     }
    91.                     ?>
    92.                     </div>
    93.                 </div>
    94.             </div>
    95.             <div class="block1 block_R">
    96.                 <?php
    97.                         include 'blocks/admin_panel.php';
    98.                         include 'blocks/profile.php';
    99.                         include 'blocks/monitoring.php';
    100.                 ?>
    101.             </div>
    102.             <?php
    103.             include 'blocks/footer.php';
    104.             ?>
    105.     </body>
    106. </html>
    Это код обработчика:
    Код (PHP):
    1. <?php
    2.     session_start();
    3.     include ('db.php');
    4.     
    5.     $user_login = $_SESSION['user_login'];
    6.     $text = $_COOKIE['news_comment'];
    7.     $new_id = $_COOKIE['news_id'];
    8.     $title = $_COOKIE['new_title'];
    9.     $full_new = $_COOKIE['full_new'];
    10.     $add_user_login = $_COOKIE['new_add_user_login'];
    11.     $new_create_date = $_COOKIE['new_create_date'];
    12.     setcookie ("news_comment", "", time() - 3600);
    13.     setcookie ("news_id", "", time() - 3600);
    14.     setcookie ("new_title", "", time() - 3600);
    15.     setcookie ("full_new", "", time() - 3600);
    16.     setcookie ("new_add_user_login", "", time() - 3600);
    17.     setcookie ("new_create_date", "", time() - 3600);
    18.     
    19.     $success = mysql_query ("INSERT INTO `news_comments` (`user_login`, `text`, `create_date`, `new_id`) VALUE 
    20.     ('$user_login', '$text', '".date("d-m-y, H:i")."', '$new_id')");
    21.     header("Location: ../news.php?id=".$new_id."&title=".$title."&full_new=".$full_new."&user_login=".$add_user_login."&create_date=".$new_create_date."");
    22. ?>
    Если можно, подскажите, почему так.
    Точно такая же беда со страницей регистрации.
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    на локалке выключить регистрацию переменных и включить максимальный уровень отладки - хороший скрипт не бросается предупреждениями. как будет готово - пробуй залить на хостинг.

    зы. а зачем 6 печенек используется?
     
  3. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Так объяснил, будто я профи)) Я же не зря создал тему в разделе для новичков))

    Добавлено спустя 1 минуту 39 секунд:
    Насчёт печенек, привык писать всё в отдельную) Мне так проще потом разобраться с кодом.

    Добавлено спустя 2 минуты 22 секунды:
    Можешь заценить сайт, если есть свободное время? Сказать что не так делаю, как бы ты сделал)
    http://samycraft.hol.es/

    Добавлено спустя 1 минуту 4 секунды:
    Кстати, забыл сказать что сам скрипт работает нормально, но предупреждения выдаёт.
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ок.
    1) register_globals должен быть отключен. ты сам должен выбирать из нужный суперглобальных массивов нужные ключи и объявлять переменные. ну то есть чтоб при запросе /index.php?a=3 у тебя был доступен $_GET['a'] но не было доступно $a на которые ты так надеешься.
    2) error_reporting должен быть в E_ALL а display_errors в on тогда скрипты будут сыпать тебе на экран всё что про тебя думают. а ты будешь исправлять чтоб скрипты про тебя ничего плохого не думали.

    и это значит что он НЕ РАБОТАЕТ НОРМАЛЬНО. нормально это когда нет предупреждений и данные обрабатываются как ожидается. остальное - не нормально.
     
  5. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Я имею ввиду что данные нормально отправляются на сервер. В том что ошибки есть я даже не сомневался.
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    -Это хорошие часы, с калькулятором!
    -В хороших часах не бывает калькулятора...

    В нормально работающем скрипте не бывает предупреждений. И даже нотисов.
     
  7. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
     
  8. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    SamyRed, если ты перевел бы сообщение об ошибке, то ты понял бы я думаю в чем дело. Ты проводишь какие то манипуляции с переменной, которая не объявлена.(код не смотрел).\
    Тебе уже объяснил Ganzal что и как.
     
  9. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Спасибо, я уже разобрался и исправил. Но всё равно я не понял почему на неё реагировал компилятор, она ведь біла в условии, которое даже не исполнялось.
     
  10. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    у пхп интерпретатор.
     
  11. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    пых так устроен что он не выполняет и порой даже не загружает куски кода недоступные по условию. так что если таки оно ругалось значит а) этот кусок выполнялся и б) таки ты не в курсе что условие было таким что этот кусок выполнялся.
     
  12. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Да тут и знать нечего, if ($comment_empty == 1)echo'<span style="color:red" class="text1">Вы не ввели коментарий</span>';
    А он ругается на то что в этой строке не объявленная переменная $comment_empty
    А до этого стоит условие что если кнопка нажата то объявлять $comment_empty и давать ему значение 1.
    Но это условие тоже не выполняется, так как я даже не думал нажимать на кнопку. Да и на локальном сервере всё работало.

    Добавлено спустя 20 секунд:
    Может я что-то не понимаю?
     
  13. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    да, ты не понимаешь.
    у тебя в единицу эта переменная объявляется на элсе какого-то условия. а до этого (читай если условие истинно) - ты эту переменную нигде не объявляешь. зато используешь. так вот если у тебя случился элс и переменная объявилась - дальнейшее сравнение будет работать со значением. а если не случилось элса (выполнилось истинное тело) то дальнейшее сравнение будет работать с необъявленной переменной о чем тебе сразу вылезает нотис.
     
  14. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Вот, теперь понял, значит пхп всё таки проверяет код который в условии?! А потом уже проверяет, выполнено ли это условие. Я правильно понял?
     
  15. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    вообще возьми на заметку, что если что-то не работает - это не "пых хуе**й, ебу**й js и т.д.", а ты где-то накосячил, где-то что-то недопонял.
     
  16. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Дык я ж и не спорю что я накосячил, я же уже писал выше, просто мне же интересно почему оно так а не иначе, где я накосячил, чтоб в следующий раз не повторить. Я и хочу понять как это устроено. Я же сюда за этим и обращаюсь)
     
  17. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    // тут переменная не определена
    if(чо-тотам) {
    //тут ты переменную не определяешь
    }else
    $comment_empty = 1; // а вот тут определение переменной


    if ($comment_empty == 1)echo // а вот тут ты её пытаешься использовать и будет она там только если "чо-тотам" будет ложным и элс объявит эту пременную

    ну что может быть проще запихнуть $comment_empty = 0 внутрь истинной части чо-тотама или выше? рано тебе еще сложные сценарии писать. ты еще пока со структурой алгоритма не до конца разобрался.
     
  18. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Да я это уже давно понял и запихнул в начало все переменные которые использую, и присвоил им "0". Теперь я вот решил понять почему оно видело эту переменную, теперь понял. Спасибо.