Создать ответ 
Проблемы со скриптом добавления комментариев на сайт
Автор Сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #51
RE: Проблемы со скриптом добавления комментариев на сайт
(15.01.2016 22:43:37)Admin писал(а):  Тут нужно понимать, что include "database.php"; будет работать только в том случае, если файл database.php и файл содержащий include "database.php"; (в нашем случае это comment.php) лежат в одной папке.
Если файл database.php и файл, из которого подключается database.php лежат в разных папках, то нужно указывать полный путь.

Вам, наверное, нужно попробовать так:
PHP код:
<?php 
include $_SERVER['DOCUMENT_ROOT']."/php/database.php"
include 
$_SERVER['DOCUMENT_ROOT']."/php/comment.php";
?>

Здравствуйте, все понятно, я пробовал делать и так ранее, но не работает.

1. database.php и comment.php находятся в 1 папке, пробовал в comment.php прописывать include "database.php"; так как лежат в 1 папке не помогло и абсолютный адрес тоже проблему не решил.

2. У меня статичная html страничка и в самом верху код:
PHP код:
<?php include $_SERVER['DOCUMENT_ROOT']."/php/comment.php";?>

3. Там, где форма, код:
PHP код:
<?php include $_SERVER['DOCUMENT_ROOT']."/php/comment_db.php";?>

4. Если в comment.php прописывать строчки подключения к базе:
PHP код:
<?php 
$time
=time();
if (
session_id()==''session_start();

$db=mysqli_connect("localhost","-----","-----""-----") or die();
$res=mysqli_query($db,"set names utf8");

// остальной код
?>

то, все нормально работает, но если, например строчки закомментировать и вместо них прописать include "database.php"; то выдается ошибка описанная в предыдущих сообщениях.

5. Все ссылается на строчки типа:
Код:
header("Location: $_SESSION[mess_url]#comment");

Пробовал менять mess_url на full_url не работает, может быть надо прописывать абсолютный адрес для $_SESSION ?

Заранее благодарен.

P.S.: Попробовал снова, ошибка

Warning: Cannot modify header information - headers already sent by (output started at D:\Site\OpenServer\domains\my_site.net\www\php\database.php:6) in D:\Site\OpenServer\domains\my_site.net\www\php\comment.php on line 71

1. Интересный момент. Ошибка database.php:6, но у меня всего 4 строчки в database.php.

2. В comment.php on line 71, где 71 строчка:
Код:
header("Location: $mess_url#comment"); exit;
(Последний раз сообщение было отредактировано 17.01.2016 в 16:18:23, отредактировал пользователь ale10ey.)
17.01.2016 16:06:45
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #52
RE: Проблемы со скриптом добавления комментариев на сайт
Попробуйте открыть database.php другим редактором и глянуть, возможно, у Вас там пустые строчки или, например, знак пробела. Их нужно удалить.

Приведенная Вами ошибка указывает на то, что до строчки header("Location: $_SESSION[mess_url]#comment"); что-то выводится на экран.

И что-то понять не могу, откуда взялось $_SESSION[mess_url]? Это вроде из старой версии скрипта, т.к. в новой просто $mess_url. А у Вас и то, и то присутствует.
17.01.2016 17:17:36
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #53
RE: Проблемы со скриптом добавления комментариев на сайт
Работает ! Yes Happy

Создал новый файл с помощью другого редактора и прописал путь к БД. Строчки или пробелы я не увидел, а вот создание новой страницы помогло. Видимо что-то было.

Насчет $_SESSION[mess_url] - мой косяк, не исправил для нового скрипта, в остальном коде $mess_url.
17.01.2016 18:45:05
Найти все сообщения Цитировать это сообщение
ingener523 Не на форуме
Младший сержант
*

Сообщений: 21
У нас с: Mar 2016
Сообщение: #54
RE: Проблемы со скриптом добавления комментариев на сайт
Добрый день! При добавлении Вашего скрипта возникли ошибки:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at X:\home\localhost\www\raschet\view_post.php:36) in X:\home\localhost\www\raschet\view_post.php on line 38

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in X:\home\localhost\www\raschet\view_post.php on line 47

Идентификатор темы вывожу по id с помощью GET.Вот код:
if (isset ($_GET['id'])) {$id = $_GET['id'];}
if (!isset($id)) {$id = 1;}
$result = mysql_query("SELECT * FROM data WHERE id='$id'",$db);

После этого добавляю Ваш скрипт c изменениями с части подключения БД и таблицы в которой хранятся все записи (data):
$time=time();
if (session_id()=='') session_start();

$db=mysqli_connect("localhost","Ваш_логин","Ваш_пароль","Имя_базы") or die();
$res=mysqli_query($db,"set names utf8");

$mess_url=mysqli_real_escape_string($db,basename($_SERVER['SCRIPT_FILENAME']));

//получаем id текущей темы
$res=mysqli_query($db,"SELECT id FROM data WHERE id='$id'".$mess_url."'");
$res=mysqli_fetch_array($res);
$theme_id=$res["id"];
11.03.2016 20:35:11
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #55
RE: Проблемы со скриптом добавления комментариев на сайт
Здравствуйте!
Ошибка связана с тем, что до вызова функции session_start() что-то выводится на экран (пробел, табуляция или любой HTML тег), либо присутствует какой-то невидимый служебный символ.

Для устранения данной ошибки перенесите строчку:
PHP код:
if (session_id()==''session_start(); 
как можно выше в коде странички, т.к. судя по приведенной Вами ошибке на данный момент до данной строчки еще 37 строк кода.

P.S. Судя по логам подобный вопрос в комментариях тоже Вы задали и он опубликован не будет, т.к. в теме уже имелись вопросы и ответы по возникновению аналогичных ошибок.
11.03.2016 20:46:51
Найти все сообщения Цитировать это сообщение
ingener523 Не на форуме
Младший сержант
*

Сообщений: 21
У нас с: Mar 2016
Сообщение: #56
RE: Проблемы со скриптом добавления комментариев на сайт
Может я что-то не правильно делаю, вот полностью код, сделал как вы советовали:
PHP код:
<? include ("blocks/bd.php");
if (
session_id()==''session_start();
if (isset (
$_GET['id']))    {$id $_GET['id'];}
if (!isset(
$id))  {$id 1;}
$result mysql_query("SELECT * FROM data WHERE id='$id'",$db); 
 
{
$myrow mysql_fetch_array($result);
$new_view $myrow["view"] + 1;
$update mysql_query ("UPDATE data SET view='$new_view' WHERE id='$id'",$db);/*Cчетчик обновлении поля: Просмотров*/
}


$time=time();


$db=mysqli_connect("localhost","****","******","raschet") or die();
$res=mysqli_query($db,"set names utf8");

$mess_url=mysqli_real_escape_string($db,basename($_SERVER['SCRIPT_FILENAME']));

//получаем id текущей темы
$res=mysqli_query($db,"SELECT id FROM data WHERE id='$id'".$mess_url."'");
$res=mysqli_fetch_array($res);
$theme_id=$res["id"];

if (isset(
$_POST["contr_cod"])){    //отправлен комментарий
 
$mess_login=htmlspecialchars($_POST["mess_login"]);
 
$user_text=htmlspecialchars($_POST["user_text"]);
 if (
md5($_POST["contr_cod"])==$_POST["prov_summa"]){    //код правильный
  
if ($mess_login!='' and $user_text!=''){
   if (
is_numeric($_POST["parent_id"]) and is_numeric($_POST["f_parent"]))
    
$res=mysqli_query($db,"insert into comment
    (parent_id, first_parent, date, theme_id, login, message)
    values ('"
.$_POST["parent_id"]."','".$_POST["f_parent"]."',
    '"
.$time."','".$theme_id."','".$mess_login."','".$user_text."')");
   else 
$res=mysqli_query($db,"insert into comment (date, theme_id, login, message)
   values ('"
.$time."','".$theme_id."','".$mess_login."','".$user_text."')");
    
$_SESSION["send"]="Комментарий принят!";
    
header("Location: $mess_url#last"); exit;
  }
  else {
   
$_SESSION["send"]="Не все поля заполнены!";
   
header("Location: $mess_url#last"); exit;
  }
 }
 else {
  
$_SESSION["send"]="Неверный проверочный код!";
  
header("Location: $mess_url#last"); exit;
 }
}

if (isset(
$_SESSION["send"]) and $_SESSION["send"]!="") {    //вывод сообщения
    
echo '<script type="text/javascript">alert("'.$_SESSION["send"].'");</script>';
    
$_SESSION["send"]="";
}
?>
11.03.2016 21:19:09
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #57
RE: Проблемы со скриптом добавления комментариев на сайт
Так а ошибки то какие на экране? Что не работает?

Из приведенного кода могу сказать следующее:
1) Если первая ошибка осталась, то нужно еще посмотреть что содержится в файле bd.php.
2) Вы смешали в одну кучу mysql и mysqli, что не есть хорошо. Рекомендую использовать только mysqli.
3) $res=mysqli_query($db,"SELECT id FROM data WHERE id='$id'".$mess_url."'");
замените на $res=mysqli_query($db,"SELECT id FROM data WHERE id='$id'");
11.03.2016 21:48:53
Найти все сообщения Цитировать это сообщение
ingener523 Не на форуме
Младший сержант
*

Сообщений: 21
У нас с: Mar 2016
Сообщение: #58
RE: Проблемы со скриптом добавления комментариев на сайт
Извините забил написать ошибки. Вот какие ошибки появились:
Warning: mysqli_query() expects parameter 1 to be mysqli, resource given in X:\home\localhost\www\raschet\view_post.php on line 5

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in X:\home\localhost\www\raschet\view_post.php on line 8

Warning: mysqli_query() expects parameter 1 to be mysqli, string given in X:\home\localhost\www\raschet\view_post.php on line 10

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in X:\home\localhost\www\raschet\view_post.php on line 24

Warning: Cannot modify header information - headers already sent by (output started at X:\home\localhost\www\raschet\view_post.php:5) in X:\home\localhost\www\raschet\view_post.php on line 60

В файле blocks/bd.php осуществляется подключение к БД.
PHP код:
<?
$db 
mysqli_connect ("localhost","****","******");
mysqli_select_db("raschet",$db);
?>

PHP код:
<? include ("blocks/bd.php");
if (
session_id()==''session_start();
if (isset (
$_GET['id']))    {$id $_GET['id'];}
if (!isset(
$id))  {$id 1;}
$res=mysqli_query($db,"SELECT id FROM data WHERE id='$id'".$mess_url."'"); 
 
{
$myrow mysqli_fetch_array($res);
$new_view $myrow["view"] + 1;
$update mysqli_query ("UPDATE data SET view='$new_view' WHERE id='$id'",$db);/*Cчетчик обновлении поля: Просмотров*/


PHP код:
$time=time();


$db=mysqli_connect("localhost","carthage","*****","*****") or die();
$res=mysqli_query($db,"set names utf8");

$mess_url=mysqli_real_escape_string($db,basename($_SERVER['SCRIPT_FILENAME']));

//получаем id текущей темы
$res=mysqli_query($db,"SELECT id FROM data WHERE id='$id'".$mess_url."'");
$res=mysqli_fetch_array($res);
$theme_id=$res["id"]; 
11.03.2016 22:15:45
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #59
RE: Проблемы со скриптом добавления комментариев на сайт
Вы неправильно работаете с MySQLi.

Для подключения к БД используйте:
PHP код:
$db=mysqli_connect("localhost","Ваш_логин","Ваш_пароль","Имя_базы") or die(); 

Далее, при использовании функций MySQLi, сначала идет $db, а потом сам запрос, например:
PHP код:
$res=mysqli_query($db,"SELECT id FROM data WHERE id=1"); 

Попробуйте протестировать сначала наш код на отдельной страничке без Ваших вставок, а уже потом внедряйте на сайт.
11.03.2016 22:37:23
Найти все сообщения Цитировать это сообщение
ingener523 Не на форуме
Младший сержант
*

Сообщений: 21
У нас с: Mar 2016
Сообщение: #60
RE: Проблемы со скриптом добавления комментариев на сайт
Спасибо, за ответ! Завтра попробую действительно протестировать на отдельной страничке.
11.03.2016 22:41:54
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru