Доброго времени суток! Появилась проблема при переходе с локального сервера на хостинг в интернете. Всё вроде перенастроил, всё норм, только выдаёт ошибку, типа неопознанные переменные: http://joxi.ru/xAe0qb4sDOn72y На локалке всё нормально было. Вот код: Код (PHP): <?php session_start(); include('handlers/db.php'); if (isset($_POST['delete_comment_x']) or isset($_POST['delete_comment_y'])) if($_SESSION['user_access_level'] == 'admin') mysql_query ("DELETE FROM `news_comments` WHERE `id` = '{$_POST['comment_id_delete']}';"); if (isset($_POST['add_coment'])){ if(isset($_POST['coment_text']) and !empty($_POST['coment_text'])){ $comment_text = htmlspecialchars($_POST['coment_text']); setcookie("news_comment", $comment_text); setcookie("new_title", $_GET['title']); setcookie("news_id", $_GET['id']); setcookie("full_new", $_GET['full_new']); setcookie("new_add_user_login", $_GET['user_login']); setcookie("new_create_date", $_GET['create_date']); header("Location: handlers/comments_loader.php"); } else $comment_empty = 1; } ?> <html> <head> <title>SR-Craft.com</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" type="text/css" href="css/styles.css"/> <link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon"> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> </head> <body> <?php include 'blocks/header.php'; include 'blocks/menu.php'; ?> <div style="padding-top:5px" class="block1 block_L"> <div style="margin-top:10px" class="block2"> <?php $id = $_GET['id']; $title = $_GET['title']; $full_new = $_GET['full_new']; $create_date = $_GET['create_date']; $user_login = $_GET['user_login']; if (isset($id)) echo ' <span class="title1">'.$title.'</span></br> <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> <span style="font-size:12px; line-height:18px; color:grey;">Добавил '.$user_login.' '.$create_date.'</span></br> '; if ($_SESSION['user_access'] == 1) echo ' <div> </br><span style="font-size:18px; " class="title1">Добавление коментариев:</span> '; else echo '</br><span style="font-size:20px; color:#4F4F4F";>Зарегистрирйтесь или войдите чтобы оставлять коментарии.</span>'; if ($comment_empty == 1)echo'<span style="color:red" class="text1">Вы не ввели коментарий</span>'; if ($_SESSION['user_access'] == 1) echo' <form action="" method="post"> <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> </br><input name="add_coment" type="submit" class="button" value="Отправить"></input> </form> </div> '; ?> </br><div> <?php $res=mysql_query("SELECT * FROM `news_comments` ORDER BY `id` DESC"); while($myrow=mysql_fetch_array($res)) { if($myrow['new_id'] == $id){ echo ' <div style="border:1px solid #F5DEB3; padding:5px 0 0 5px; margin:20px 0 5px 0"> ';} if($myrow['new_id'] == $id) if ($_SESSION['user_access_level'] == 'admin') echo ' <form style="padding:0" action="" method="post"> <input type="hidden" name="comment_id_delete" value="'.$myrow['id'].'"></input> <input type="image" name="delete_comment" style="padding:0; margin:0 0 5px 10px; cursor:pointer;" title="Удалить комментарий" src="images/delete.png"></input></br> </form> '; if($myrow['new_id'] == $id) echo ' <span style="font-size:18px; padding:0">'.$myrow['text'].'</span></br> <span class="text1" style="font-size:12px; line-height:20px; padding:0">Добавил '.$myrow['user_login'].' '.$myrow['create_date'].'</span> </div> '; } ?> </div> </div> </div> <div class="block1 block_R"> <?php include 'blocks/admin_panel.php'; include 'blocks/profile.php'; include 'blocks/monitoring.php'; ?> </div> <?php include 'blocks/footer.php'; ?> </body> </html> Это код обработчика: Код (PHP): <?php session_start(); include ('db.php'); $user_login = $_SESSION['user_login']; $text = $_COOKIE['news_comment']; $new_id = $_COOKIE['news_id']; $title = $_COOKIE['new_title']; $full_new = $_COOKIE['full_new']; $add_user_login = $_COOKIE['new_add_user_login']; $new_create_date = $_COOKIE['new_create_date']; setcookie ("news_comment", "", time() - 3600); setcookie ("news_id", "", time() - 3600); setcookie ("new_title", "", time() - 3600); setcookie ("full_new", "", time() - 3600); setcookie ("new_add_user_login", "", time() - 3600); setcookie ("new_create_date", "", time() - 3600); $success = mysql_query ("INSERT INTO `news_comments` (`user_login`, `text`, `create_date`, `new_id`) VALUE ('$user_login', '$text', '".date("d-m-y, H:i")."', '$new_id')"); header("Location: ../news.php?id=".$new_id."&title=".$title."&full_new=".$full_new."&user_login=".$add_user_login."&create_date=".$new_create_date.""); ?> Если можно, подскажите, почему так. Точно такая же беда со страницей регистрации.
на локалке выключить регистрацию переменных и включить максимальный уровень отладки - хороший скрипт не бросается предупреждениями. как будет готово - пробуй залить на хостинг. зы. а зачем 6 печенек используется?
Так объяснил, будто я профи)) Я же не зря создал тему в разделе для новичков)) Добавлено спустя 1 минуту 39 секунд: Насчёт печенек, привык писать всё в отдельную) Мне так проще потом разобраться с кодом. Добавлено спустя 2 минуты 22 секунды: Можешь заценить сайт, если есть свободное время? Сказать что не так делаю, как бы ты сделал) http://samycraft.hol.es/ Добавлено спустя 1 минуту 4 секунды: Кстати, забыл сказать что сам скрипт работает нормально, но предупреждения выдаёт.
ок. 1) register_globals должен быть отключен. ты сам должен выбирать из нужный суперглобальных массивов нужные ключи и объявлять переменные. ну то есть чтоб при запросе /index.php?a=3 у тебя был доступен $_GET['a'] но не было доступно $a на которые ты так надеешься. 2) error_reporting должен быть в E_ALL а display_errors в on тогда скрипты будут сыпать тебе на экран всё что про тебя думают. а ты будешь исправлять чтоб скрипты про тебя ничего плохого не думали. и это значит что он НЕ РАБОТАЕТ НОРМАЛЬНО. нормально это когда нет предупреждений и данные обрабатываются как ожидается. остальное - не нормально.
Я имею ввиду что данные нормально отправляются на сервер. В том что ошибки есть я даже не сомневался.
-Это хорошие часы, с калькулятором! -В хороших часах не бывает калькулятора... В нормально работающем скрипте не бывает предупреждений. И даже нотисов.
SamyRed, если ты перевел бы сообщение об ошибке, то ты понял бы я думаю в чем дело. Ты проводишь какие то манипуляции с переменной, которая не объявлена.(код не смотрел).\ Тебе уже объяснил Ganzal что и как.
Спасибо, я уже разобрался и исправил. Но всё равно я не понял почему на неё реагировал компилятор, она ведь біла в условии, которое даже не исполнялось.
пых так устроен что он не выполняет и порой даже не загружает куски кода недоступные по условию. так что если таки оно ругалось значит а) этот кусок выполнялся и б) таки ты не в курсе что условие было таким что этот кусок выполнялся.
Да тут и знать нечего, if ($comment_empty == 1)echo'<span style="color:red" class="text1">Вы не ввели коментарий</span>'; А он ругается на то что в этой строке не объявленная переменная $comment_empty А до этого стоит условие что если кнопка нажата то объявлять $comment_empty и давать ему значение 1. Но это условие тоже не выполняется, так как я даже не думал нажимать на кнопку. Да и на локальном сервере всё работало. Добавлено спустя 20 секунд: Может я что-то не понимаю?
да, ты не понимаешь. у тебя в единицу эта переменная объявляется на элсе какого-то условия. а до этого (читай если условие истинно) - ты эту переменную нигде не объявляешь. зато используешь. так вот если у тебя случился элс и переменная объявилась - дальнейшее сравнение будет работать со значением. а если не случилось элса (выполнилось истинное тело) то дальнейшее сравнение будет работать с необъявленной переменной о чем тебе сразу вылезает нотис.
Вот, теперь понял, значит пхп всё таки проверяет код который в условии?! А потом уже проверяет, выполнено ли это условие. Я правильно понял?
вообще возьми на заметку, что если что-то не работает - это не "пых хуе**й, ебу**й js и т.д.", а ты где-то накосячил, где-то что-то недопонял.
Дык я ж и не спорю что я накосячил, я же уже писал выше, просто мне же интересно почему оно так а не иначе, где я накосячил, чтоб в следующий раз не повторить. Я и хочу понять как это устроено. Я же сюда за этим и обращаюсь)
// тут переменная не определена if(чо-тотам) { //тут ты переменную не определяешь }else $comment_empty = 1; // а вот тут определение переменной if ($comment_empty == 1)echo // а вот тут ты её пытаешься использовать и будет она там только если "чо-тотам" будет ложным и элс объявит эту пременную ну что может быть проще запихнуть $comment_empty = 0 внутрь истинной части чо-тотама или выше? рано тебе еще сложные сценарии писать. ты еще пока со структурой алгоритма не до конца разобрался.
Да я это уже давно понял и запихнул в начало все переменные которые использую, и присвоил им "0". Теперь я вот решил понять почему оно видело эту переменную, теперь понял. Спасибо.