Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

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

 

Я не программист, многие знают.

 

в БД

ALTER TABLE  `s_comments` ADD  `image` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL

в config.php

 
;Изображения отзыва
otzuvy_images_dir = files/otzuvy/;
 
добавляем папку otzuvy в files
 
в api/Comments.php (в 2 местах) добавляем:
c.image,
 
в этом же файле, добавим ниже:
    
    public function delete_image($id)
    {
        $id = (array) $id;
        $query = $this->db->placehold("SELECT image FROM __comments WHERE id in(?@)", $id);
        $this->db->query($query);
        $filenames = $this->db->results('image');
        if(!empty($filenames))
        {
            $query = $this->db->placehold("UPDATE __comments SET image=NULL WHERE id in(?@)", $id);
            $this->db->query($query);
            foreach($filenames as $filename)
            {
                $query = $this->db->placehold("SELECT count(*) as count FROM __comments WHERE image=?", $filename);
                $this->db->query($query);
                $count = $this->db->result('count');
                if($count == 0)
                {            
                    @unlink($this->config->root_dir.$this->config->otzuvy_images_dir.$filename);        
                }
            }
        }
    }

 

    
в шаблоне pruduct,tpl
 
выводим картинку
{if $comment->image}<img src="{$config->otzuvy_images_dir}{$comment->image}" alt="" />{/if}
 
в форму добавления комментария добавляем:
<input class='upload_image' name="image" type="file">  
   
 
Полагаю нужно добавить в ProductView.php что-то типа:
 
после: 
 
class ProductView extends View
{
 
добавить:
 
private $allowed_image_extentions = array('png', 'gif', 'jpg', 'jpeg', 'ico', 'bmp');
 
далее типа:
                // Загрузка изображения
                $image = $this->request->files('image');
                if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions))
                {
                    $this->comments->delete_image($comment->id);
                    move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']);
                    $this->comments->update_comment($id, array('image'=>$image['name']));
                }

 

В БД записывается, в шаблоне отображается путь и название, но не загружает в папку otzuvy картинки. Что нужно править? 
Изменено пользователем n1c
Ссылка на сообщение
Поделиться на другие сайты

 

спасибо)

теперь загружает в папку, но при этом не отображаются комментарии т.к multipart/form-data, или наоборот по стандарту отображается комментарий но не выводит фото

Изменено пользователем n1c
Ссылка на сообщение
Поделиться на другие сайты

Как это? Вы бред пишете...

Покажите кусок шаблона, где комментарии и фото.

 

 
<!-- Комментарии -->
<div id="comments">

    <h2>Комментарии</h2>
    
    {if $comments}
    <!-- Список с комментариями -->
    <ul class="comment_list">
        {foreach $comments as $comment}
        <a name="comment_{$comment->id}"></a>
        <li>

            <!-- Имя и дата комментария-->
            <div class="comment_header">    
            
                {$comment->name|escape} <i>{$comment->date|date}, {$comment->date|time}</i>
                {if !$comment->approved}ожидает модерации</b>{/if}
            </div>
            <!-- Имя и дата комментария (The End)-->

            {$comment->text|escape|nl2br}
            
            <br>
            
            {if $comment->image}<img width="200" src="{$config->otzuvy_images_dir}{$comment->image}" alt="" />{/if}
            
        </li>
        {/foreach}
    </ul>
    <!-- Список с комментариями (The End)-->
    {else}
    <p>
        Пока нет комментариев
    </p>
    {/if}
    
    <!--Форма отправления комментария-->    
    <form class="comment_form" enctype="multipart/form-data" method="post">
        <h2>Написать комментарий</h2>
        {if $error}
        <div class="message_error">
            {if $error=='captcha'}
            Неверно введена капча
            {elseif $error=='empty_name'}
            Введите имя
            {elseif $error=='empty_comment'}
            Введите комментарий
            {/if}
        </div>
        {/if}
        
        <input class='upload_image' name="image" type="file">            

        <textarea class="comment_textarea" id="comment_text" name="text" data-format=".+" data-notice="Введите комментарий">{$comment_text}</textarea><br />
        <div>
        <label>Имя</label>
        <input class="input_name" type="text" id="comment_name" name="name" value="{$comment_name}" data-format=".+" data-notice="Введите имя"/>

        <input class="button" type="submit" name="comment" value="Отправить" />

        </div>
    </form>
    <!--Форма отправления комментария (The End)-->
    
</div>
<!-- Комментарии (The End) -->

 

Ссылка на сообщение
Поделиться на другие сайты

И что у вас не показывается?

 

все показывается. а корректной работы нет. если в форме multipart/form-data то при написании комментария - не отображается как на сайте так и в админке, но фото в папку загружается, а если убрать multipart/form-data то комментарий появляется а фото в папке нет.

Ссылка на сообщение
Поделиться на другие сайты

Скорее всего, у Вас ошибка в обработчике.

Очень подозрительна строка

$this->comments->update_comment($id, array('image'=>$image['name']));

Стандартно в том файле НЕТ значения $id как идентификатора нового комментария...

А выложить код полностью не догадываетесь, вместо этого у Вас туманное "далее типа" - вот оно и работает соответственно.

Возможно, надо вместо $id писать $comment_id ...

 

И еще просматривается ошибка, которая позволит каждому желающему натворить на Вашем сайте неприятностей:

1. Зашел хороший посетитель, оставил хороший комментарий с хорошей картинкой. Картинка называется, допустим phone.jpg

2. Потом зашел НЕхороший посетитель, увидел картинку, прочел название. У себя создал НЕхорошую картинку с таким же названием. Написал отзыв и загрузил свою картинку.

3. Ваша доработка  перезапишет на сервере файл phone.jpg.  В результате появится НЕхорошая картинка у ДВУХ отзывов.

4. Если Вы в админке удалите отзыв НЕхорошего посетителя, то все равно НЕхорошая картинка останется у хорошего отзыва.

5. НЕхорошему посетителю это, скорее всего, понравится, он будет время от времени показывать свой прием каким-нибудь своим знакомым девочкам, дабы ловить восторженные взгляды. Или делиться с ними или с кем-то еще своей методикой, благо она крайне проста...

6. Что после этого будет думать хороший посетитель о владельце сайта?

Ссылка на сообщение
Поделиться на другие сайты

Скорее всего, у Вас ошибка в обработчике.

Очень подозрительна строка

$this->comments->update_comment($id, array('image'=>$image['name']));

Стандартно в том файле НЕТ значения $id как идентификатора нового комментария...

А выложить код полностью не догадываетесь, вместо этого у Вас туманное "далее типа" - вот оно и работает соответственно.

Возможно, надо вместо $id писать $comment_id ...

 

И еще просматривается ошибка, которая позволит каждому желающему натворить на Вашем сайте неприятностей:

1. Зашел хороший посетитель, оставил хороший комментарий с хорошей картинкой. Картинка называется, допустим phone.jpg

2. Потом зашел НЕхороший посетитель, увидел картинку, прочел название. У себя создал НЕхорошую картинку с таким же названием. Написал отзыв и загрузил свою картинку.

3. Ваша доработка  перезапишет на сервере файл phone.jpg.  В результате появится НЕхорошая картинка у ДВУХ отзывов.

4. Если Вы в админке удалите отзыв НЕхорошего посетителя, то все равно НЕхорошая картинка останется у хорошего отзыва.

5. НЕхорошему посетителю это, скорее всего, понравится, он будет время от времени показывать свой прием каким-нибудь своим знакомым девочкам, дабы ловить восторженные взгляды. Или делиться с ними или с кем-то еще своей методикой, благо она крайне проста...

6. Что после этого будет думать хороший посетитель о владельце сайта?

 

Изначально вместо $id я ставил $comment_id но выдавало ошибку, но буду пробовать еще.

Про название картинки "photo.jpg" это действительно так, я думал над этим, но хз как заставить переименовываться

Ссылка на сообщение
Поделиться на другие сайты

Изначально вместо $id я ставил $comment_id но выдавало ошибку, но буду пробовать еще.

Про название картинки "photo.jpg" это действительно так, я думал над этим, но хз как заставить переименовываться

Я не программист, многие знают.

Вот для того и нужны эти самые программисты...

Ссылка на сообщение
Поделиться на другие сайты

от души помог! ;)

 

Если намекаете на то, что Вы ожидали полную подсказку, где и в чем ошибка и как поправить, то для этого с Вашей стороны должны быть ПОЛНЫЕ сведения о том, что и как Вы меняете.

Как написано сейчас

 

 

Полагаю нужно добавить в ProductView.php что-то типа:

после: 

 

class ProductView extends View

{

 

добавить:

 

private $allowed_image_extentions = array('png', 'gif', 'jpg', 'jpeg', 'ico', 'bmp');

 

далее типа:

                // Загрузка изображения
                $image = $this->request->files('image');
                if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions))
                {
                    $this->comments->delete_image($comment->id);
                    move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']);
                    $this->comments->update_comment($id, array('image'=>$image['name']));
                }

 

то, если сделать в точности так, то страница товара работать не будет вообще...

 

Если у Вас работает, то стало быть, делаете одно, а пишете тут совсем другое.

Почини мне то, не скажу что...

Ссылка на сообщение
Поделиться на другие сайты

 

Если намекаете на то, что Вы ожидали полную подсказку, где и в чем ошибка и как поправить, то для этого с Вашей стороны должны быть ПОЛНЫЕ сведения о том, что и как Вы меняете.

Как написано сейчас

 

 

то, если сделать в точности так, то страница товара работать не будет вообще...

 

Если у Вас работает, то стало быть, делаете одно, а пишете тут совсем другое.

Почини мне то, не скажу что...

 

не намекаю, а сарказм))

я описал точно как делал у себя, ошибки страница товара выдает конечно, но поправлю

в ProductView.php я сомневаюсь что правильно вообще подставлено где "// загрузка изображения"

возможно в шаблоне нужно JS дописать для формы?

Ссылка на сообщение
Поделиться на другие сайты

я описал точно как делал у себя, ошибки страница товара выдает конечно, но поправлю

 

Это Вы так думаете, что точно. А на самом деле совсем иначе...

 

в ProductView.php я сомневаюсь что правильно вообще подставлено где "// загрузка изображения"

 

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

 

Выложить свой ProductView.php жаба душит? Коммерческая тайна, большая ценность? Вместо этого Вам нравится вести длинную дискуссию ни о чем?

Ссылка на сообщение
Поделиться на другие сайты

Это Вы так думаете, что точно. А на самом деле совсем иначе...

 

 

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

 

Выложить свой ProductView.php жаба душит? Коммерческая тайна, большая ценность? Вместо этого Вам нравится вести длинную дискуссию ни о чем?

 

Kors, вам лучше знать что я думаю?

Тайны вообще никакой, вот мой ProductView.php


require_once('View.php');


class ProductView extends View
{

	private $allowed_image_extentions = array('png', 'gif', 'jpg', 'jpeg', 'ico', 'bmp');

	function fetch()
	{   
		$product_url = $this->request->get('product_url', 'string');
		
		if(empty($product_url))
			return false;

		// Выбираем товар из базы
		$product = $this->products->get_product((string)$product_url);
		if(empty($product) || (!$product->visible && empty($_SESSION['admin'])))
			return false;
		
		$product->images = $this->products->get_images(array('product_id'=>$product->id));
		$product->image = &$product->images[0];

		$variants = array();
		//foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v)
		foreach($this->variants->get_variants(array('product_id'=>$product->id)) as $v)
			$variants[$v->id] = $v;
		
		$product->variants = $variants;
		
		// Вариант по умолчанию
		if(($v_id = $this->request->get('variant', 'integer'))>0 && isset($variants[$v_id]))
			$product->variant = $variants[$v_id];
		else
			$product->variant = reset($variants);
					
		$product->features = $this->features->get_product_options(array('product_id'=>$product->id));

	/*	
		// Автозаполнение имени для формы комментария
		if(!empty($this->user))
			$this->design->assign('comment_name', $this->user->name);

		// Принимаем комментарий
		if ($this->request->method('post') && $this->request->post('comment'))
		{
			$comment->name = $this->request->post('name');
			$comment->text = $this->request->post('text');
			$captcha_code =  $this->request->post('captcha_code', 'string');
			
			// Передадим комментарий обратно в шаблон - при ошибке нужно будет заполнить форму
			$this->design->assign('comment_text', $comment->text);
			$this->design->assign('comment_name', $comment->name);
			
	*/
	
        // Автозаполнение имени для формы комментария
        if(!empty($this->user))
            $this->design->assign('comment_name', $this->user->name);
            //$this->design->assign('comment_email', $this->user->email);
        
        // Принимаем комментарий
        if ($this->request->method('post') && $this->request->post('comment'))
        {
            $comment->image = $this->request->post('image');
            $comment->name = $this->request->post('name');
            $comment->email = $this->request->post('email');
            $comment->text = $this->request->post('text');

            // Передадим комментарий обратно в шаблон - при ошибке нужно будет заполнить форму
            $this->design->assign('comment_text', $comment->text);
            $this->design->assign('comment_name', $comment->image);
            $this->design->assign('comment_name', $comment->name);
            $this->design->assign('comment_email', $comment->email);

			// Проверяем капчу и заполнение формы
			if (empty($comment->name))
			{
				$this->design->assign('error', 'empty_name');
			}
			elseif (empty($comment->text))
			{
				$this->design->assign('error', 'empty_comment');
			}
			else
			{
				// Создаем комментарий
				$comment->object_id = $product->id;
				$comment->type      = 'product';
				$comment->ip        = $_SERVER['REMOTE_ADDR'];

				// Если были одобренные комментарии от текущего ip, одобряем сразу
				$this->db->query("SELECT 1 FROM __comments WHERE approved=1 AND ip=? LIMIT 1", $comment->ip);
				if($this->db->num_rows()>0)
					$comment->approved = 1;

				// Загрузка изображения
				$image = $this->request->files('image');
				if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions))
				{
					$this->comments->delete_image($comment->id);
					move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']);
					$this->comments->update_comment($id, array('image'=>$image['name']));
				}

				// Добавляем комментарий в базу
				$comment_id = $this->comments->add_comment($comment);
				
				// Отправляем email
				$this->notify->email_comment_admin($comment_id);				
				
				// Приберем сохраненную капчу, иначе можно отключить загрузку рисунков и постить старую
				unset($_SESSION['captcha_code']);
				header('location: '.$_SERVER['REQUEST_URI'].'#comment_'.$comment_id);

			}			
		}
		
		// Комментарии к товару
		$comments = $this->comments->get_comments(array('type'=>'product', 'object_id'=>$product->id, 'approved'=>1, 'ip'=>$_SERVER['REMOTE_ADDR']));
		$this->design->assign('comments', $comments);
		
		// Связанные товары
		$related_ids = array();
		$related_products = array();
		foreach($this->products->get_related_products($product->id) as $p)
		{
			$related_ids[] = $p->related_id;
			$related_products[$p->related_id] = null;
		}
		if(!empty($related_ids))
		{
			foreach($this->products->get_products(array('id'=>$related_ids, 'in_stock'=>1, 'visible'=>1)) as $p)
				$related_products[$p->id] = $p;
			
			$related_products_images = $this->products->get_images(array('product_id'=>array_keys($related_products)));
			foreach($related_products_images as $related_product_image)
				if(isset($related_products[$related_product_image->product_id]))
					$related_products[$related_product_image->product_id]->images[] = $related_product_image;
			$related_products_variants = $this->variants->get_variants(array('product_id'=>array_keys($related_products), 'instock'=>true));
			foreach($related_products_variants as $related_product_variant)
			{
				if(isset($related_products[$related_product_variant->product_id]))
				{
					$related_products[$related_product_variant->product_id]->variants[] = $related_product_variant;
				}
			}
			foreach($related_products as $id=>$r)
			{
				if(is_object($r))
				{
					$r->image = &$r->images[0];
					$r->variant = &$r->variants[0];
				}
				else
				{
					unset($related_products[$id]);
				}
			}
			$this->design->assign('related_products', $related_products);
		}

		// Отзывы о товаре
		$comments = $this->comments->get_comments(array('type'=>'product', 'object_id'=>$product->id, 'approved'=>1, 'ip'=>$_SERVER['REMOTE_ADDR']));
		
		// Соседние товары
		$this->design->assign('next_product', $this->products->get_next_product($product->id));
		$this->design->assign('prev_product', $this->products->get_prev_product($product->id));

		// И передаем его в шаблон
		$this->design->assign('product', $product);
		$this->design->assign('comments', $comments);
		
		// Категория и бренд товара
		$product->categories = $this->categories->get_categories(array('product_id'=>$product->id));
		$this->design->assign('brand', $this->brands->get_brand(intval($product->brand_id)));		
		$this->design->assign('category', reset($product->categories));		
		

		// Добавление в историю просмотров товаров
		$max_visited_products = 100; // Максимальное число хранимых товаров в истории
		$expire = time()+60*60*24*30; // Время жизни - 30 дней
		if(!empty($_COOKIE['browsed_products']))
		{
			$browsed_products = explode(',', $_COOKIE['browsed_products']);
			// Удалим текущий товар, если он был
			if(($exists = array_search($product->id, $browsed_products)) !== false)
				unset($browsed_products[$exists]);
		}
		// Добавим текущий товар
		$browsed_products[] = $product->id;
		$cookie_val = implode(',', array_slice($browsed_products, -$max_visited_products, $max_visited_products));
		setcookie("browsed_products", $cookie_val, $expire, "/");
		
		$this->design->assign('meta_title', $product->meta_title);
		$this->design->assign('meta_keywords', $product->meta_keywords);
		$this->design->assign('meta_description', $product->meta_description);
		
		return $this->design->fetch('product.tpl');
	}
	


}

Ссылка на сообщение
Поделиться на другие сайты

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

нужно вам поменять этот кусок.

				// Загрузка изображения
				$image = $this->request->files('image');
				if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions))
				{
					$this->comments->delete_image($comment->id);
					move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']);
					$this->comments->update_comment($id, array('image'=>$image['name']));
				}

				// Добавляем комментарий в базу
				$comment_id = $this->comments->add_comment($comment);

 

ф-я удаления изображения тут вообще бессмысленна т.к. комментарий всегда новый и у него не может быть до этого изображения.

 

// Добавляем комментарий в базу
$comment_id = $this->comments->add_comment($comment);

// Загрузка изображения
$image = $this->request->files('image');
if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions))
{
	move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']);
	$this->comments->update_comment($comment_id, array('image'=>$image['name']));
}
Изменено пользователем mishanya
Ссылка на сообщение
Поделиться на другие сайты

// Загрузка изображения

Должна быть ПОСЛЕ 

// Добавляем комментарий в базу

Иначе вы пытаетесь обновить несуществующий коммент

И после 

$comment_id = $this->comments->add_comment($comment);

Вам будет доступен $comment_id

Ссылка на сообщение
Поделиться на другие сайты

Тайны вообще никакой, вот мой ProductView.php

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

Про них говорилось уже, Вы не среагировали никак...

Скорее всего, у Вас ошибка в обработчике.

Очень подозрительна строка

$this->comments->update_comment($id, array('image'=>$image['name']));

Стандартно в том файле НЕТ значения $id как идентификатора нового комментария...

А я еще сомневаюсь, что в правильном месте это у Вас вставлено.

Ссылка на сообщение
Поделиться на другие сайты

 

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

нужно вам поменять этот кусок.

				// Загрузка изображения
				$image = $this->request->files('image');
				if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions))
				{
					$this->comments->delete_image($comment->id);
					move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']);
					$this->comments->update_comment($id, array('image'=>$image['name']));
				}

				// Добавляем комментарий в базу
				$comment_id = $this->comments->add_comment($comment);

 

ф-я удаления изображения тут вообще бессмысленна т.к. комментарий всегда новый и у него не может быть до этого изображения.

 

// Добавляем комментарий в базу
$comment_id = $this->comments->add_comment($comment);

// Загрузка изображения
$image = $this->request->files('image');
if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions))
{
	move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']);
	$this->comments->update_comment($comment_id, array('image'=>$image['name']));
}

 

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

Про них говорилось уже, Вы не среагировали никак...

 

// Загрузка изображения

Должна быть ПОСЛЕ 

// Добавляем комментарий в базу

Иначе вы пытаетесь обновить несуществующий коммент

И после 

$comment_id = $this->comments->add_comment($comment);

Вам будет доступен $comment_id

 

Спасибо пацаны.

Но все равно какае-то фигня, не работает корректно. Выдает ошибку Warning: Column 'image' cannot be null [iNSERT INTO s_comments SET image=NULL, name='John Doe', email=NULL, text='комментарий', object_id='55', type='product', ip='127.0.0.1', approved='1', date = NOW()] in Z:\home\site\api\Database.php on line 105

Ссылка на сообщение
Поделиться на другие сайты

Спасибо пацаны.

Но все равно какае-то фигня, не работает корректно. Выдает ошибку Warning: Column 'image' cannot be null [iNSERT INTO s_comments SET image=NULL, name='John Doe', email=NULL, text='комментарий', object_id='55', type='product', ip='127.0.0.1', approved='1', date = NOW()] in Z:\home\site\api\Database.php on line 105

 

вам пишет, поле image не может быть пустым. еще раз обратимся к логике, нужно сделать в базе его NULL по умолчанию, т.к. вы загружаете изображение после добавления самого коммента.

Изменено пользователем mishanya
Ссылка на сообщение
Поделиться на другие сайты

вам пишет, поле image не может быть пустым. еще раз обратимся к логике, нужно сделать в базе его NULL по умолчанию, т.к. вы загружаете изображение после добавления самого коммента.

 

спасибо mishanya! заработало!)

Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...

Доброго времени суток!

Народ прошу помощи.

 

Один и тот же сайт расположен на разных хостингах.

На одном хостинге фото добавляются - проблем нет. А вот на другом после загрузки изображения вываливается ошибка:

Warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 in /var/www/api/Database.php on line 115
Warning: Cannot modify header information - headers already sent by (output started at /var/www/api/Database.php:115) in /var/www/view/ProductView.php on line 97
Warning: Cannot modify header information - headers already sent by (output started at /var/www/api/Database.php:115) in /var/www/view/ProductView.php on line 169
Warning: Cannot modify header information - headers already sent by (output started at /var/www/api/Database.php:115) in /var/www/index.php on line 17

api/Database.php on line 115

    	trigger_error($this->mysqli->error, E_USER_WARNING);

view/ProductView.php on line 97

header('location: '.$_SERVER['REQUEST_URI'].'#comment_'.$comment_id);

view/ProductView.php on line 169

 setcookie("browsed_products", $cookie_val, $expire, "/");

/index.php on line 17

  header("Content-type: text/html; charset=UTF-8");

 

Но при этом фото загружается и отображается.

Не подскажите в чем может быть проблема?

Изменено пользователем villain1988
Ссылка на сообщение
Поделиться на другие сайты

Ошибка в тексте запроса, скорее всего, синтаксическая.  

Отслеживать текст запроса, место запроса, находить ошибку и исправлять...

 

А может быть и еще масса причин, связанных с разными настройками на хостингах...

Ссылка на сообщение
Поделиться на другие сайты

Доброго времени суток!

Народ прошу помощи.

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

Как выяснилось различался этот код:

// Добавляем комментарий в базу
$comment_id = $this->comments->add_comment($comment);

// Загрузка изображения
$image = $this->request->files('image');
if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions))
{
	move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->otzuvy_images_dir.$image['name']);
	$this->comments->update_comment($comment_id, array('image'=>$image['name']));
}

Поправил - заработало без ошибок.

Спасибо!

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...