Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 105

Исправить добавление лишнего элемента в сессию

16.12.2015, 16:59. Показов 845. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В начале страницы, инклужу нужный файл, вытаскиваю все переменные, а потом убираю html содержимое функцией ob_clean()
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$title_web_site = mysql_fetch_array(mysql_query("SELECT * FROM `config` WHERE id='1'"));
ob_start();
switch($uri)
{
    case 1 : include("inc/index.php"); $content = "index"; break;
    case 2 : include("inc/catalog.php"); $content = "catalog"; break;
    case 3 : include("inc/product.php"); $content = "product"; break;
    case 4 : include("inc/about.php"); $content = "about"; break;
    case 5 : include("inc/contact.php"); $content = "contact"; break;
    case 7 : include("inc/pay.php"); $content = "pay"; break;
    default : echo "<script>window.location.href='/404'</script>";
}
ob_clean();
//В каждом файле есть переменная $title
потом вывожу данную переменную
HTML5
1
<title><?=$title?></title>
А дальше уже в сам контент вставляю содержимое подключаемой страницы:
HTML5
1
2
3
4
5
<div id='content'>
<?$file = 'inc/'.$content.'.php';
include($file);
?>
</div>
С самого начала знал, что идея плохая, но все работало и меня это устраивало. Пока не наткнулся на ошибку...
При нажатии кнопки (post) у меня происходит добавления элемента в массив сессии. И там где должен добавляться 1 элемент добавляется 2.
Пожалуйста, помогите исправить..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.12.2015, 16:59
Ответы с готовыми решениями:

Добавление в сессию
Код addcart.php $_SESSION=Array(); $stmt = $pdo-&gt;query('SELECT * FROM news WHERE id = '.$Module); while ($row =...

Добавление в сессию, локальное хранилище или кэш
У на другом форуме зада вопрос: Мне ответили: Вот я и хотел узнать, как это сделать? Либо просто объясните как это работает...

Добавление элемента в динамически расширяемый массив: найти и исправить ошибки в коде
Программа заносит отрицательный элементы из массива Z в массив В по порядку. В чем ошибка? Как исправить? #include &lt;iostream&gt; ...

7
В поисках себя
 Аватар для Glart
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.12.2015, 17:05
Цитата Сообщение от NeeON4ik Посмотреть сообщение
При нажатии кнопки (post) у меня происходит добавления элемента в массив сессии. И там где должен добавляться 1 элемент добавляется 2.
Если помощь нужна в этом, то наверное нужно кусок кода показывать, который отвечает за это.

В вышеприведенном коде вообще нет работы с сессиями.
0
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 105
16.12.2015, 17:18  [ТС]
Glart, вот допустим, case 1:
файл inc/index.php
PHP
1
2
3
4
5
6
7
8
9
<?
session_start();
if($_POST['button'])
    array_push($_SESSION['myCart'], 1);
    print_r($_SESSION['myCart']);
?>
<form method='post'>
    <input type='submit' name='button'>
</form>
при клике добавляется 2 элемента.

я понимаю почему, потому что, инклудится дважды один файла. вопрос, в том как грамотно получить переменную $title, что б такой ошибки не возникало
0
В поисках себя
 Аватар для Glart
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.12.2015, 17:23
Цитата Сообщение от NeeON4ik Посмотреть сообщение
я понимаю почему, потому что, инклудится дважды один файла.
Зачем 2 раза инклудить? Можно при первом инклуде все или частично вытянуть в переменные, которые в дальнейшем использовать.
0
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 105
16.12.2015, 17:29  [ТС]
можете показать как подобное реализовать? чтобы проинклудить,
в <title><?=$title?></title> вывести переменную, а в <div id='content'> уже содержимое
0
В поисках себя
 Аватар для Glart
115 / 89 / 34
Регистрация: 12.11.2015
Сообщений: 529
16.12.2015, 17:36
Я просто не понимаю какая структура у вас.

Пример:

Файл contacts.php
PHP
1
2
$title = 'Contacts';
$content = 'My contacts.';
Файл для вывода данных

PHP
1
2
3
4
<title><?=$title?></title>
<div id="content">
<?=$content?>
</div>
Если я правильно понял...
0
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 105
16.12.2015, 18:26  [ТС]
Glart, такой пример вряд ли поможет. такая структура
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<? 
    $myUrl = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    $idUrl = explode('?', $_SERVER['REQUEST_URI']);
    $config = mysql_fetch_array(mysql_query("SELECT * FROM `config` WHERE id='1'"));
    if($config['url_method']=="ID"){
        $inf = mysql_fetch_array(mysql_query("SELECT * FROM `bd_all_t` WHERE `id`='".$idUrl[1]."'"));
    } else $inf = mysql_fetch_array(mysql_query("SELECT * FROM `bd_all_t` WHERE `chpu`='".urldecode($idUrl[1])."'"));
    
    $Keywords = $inf['name']." Купить товары ручной работы";
    $description = $inf['desc']."<!--это само описание товара-->";
    $config = mysql_fetch_array(mysql_query("SELECT `valute` FROM `config` WHERE id='1'"));
    switch ($config['valute']){
        case 'UAH' : $valuteRight=$config['valute']; break;
        case 'RUB' : $valuteRight=$config['valute']; break;
        case '€' : $valuteLeft=$config['valute']; break;
        case '$' : $valuteLeft=$config['valute']; break;
        }
    $title = $inf['name']." - ".$inf['category'];
    $keywords=$inf['Keyword'];
    $description='Купить '.$title.' в ..... '.$inf['desc'];
    if($inf['policy']=="")
        $statusPolicy = "false";
    
    if($_POST['go_to_cart_zakaz']){
        if($_POST['numb_zakaz']>0 && $_POST['numb_zakaz']<1000){
            if(isset($_SESSION['myCart'])){
                    for($i=0; $i<$_POST['numb_zakaz']; $i++)
                        array_push($_SESSION['myCart'], $inf['id']);
            }
            else
                $_SESSION['myCart']=array();
        } else echo '<Script>alert("Количество порций должно быть в диапазоне от 1 до 999!");</script>';
    }
?>
<form method='post'>
<div id='product_title'>
    <h1 id='product_title_label'><?=$inf['name'];?></h1>
</div>
<div id='product_title_footer'></div>
<div id='product_form_img'>
<img id='product_img' src='img/upload/700/<?=$inf['img_1'];?>.png'>
</div>
<a id='footer_name' style='margin-top: 11px;'>«<?=$inf['name'];?>»</a>
<p id='footer_name' style='font-size: 15px; color: #5B85FC; margin-left: 5px;margin-top: 11px;'>(<?=$inf['info'];?> гр.)</p>
<p id='footer_name' style='font-size: 40px; font-weight: bold; color: #5B85FB; margin-right: 0; margin-left: 40px;overflow: initial;'><?=$inf['price'];?></p>
<p id='footer_name' style='position: relative; top: 2px; color: #5B85FB;'><?=$valuteLeft?><?=$valuteRight?></p>
<div id='product_of_cart'><img style='width:13px;cursor: pointer;' onclick='minus();' src='img/m1.png'> 
<input onkeyup="this.value = this.value.replace (/\D/gi, '').replace (/^0+/, '');" maxlength='3' id='numb_product_cart' type='text' name='numb_zakaz' value='1'> шт. 
<img onclick='plus();' style='width:13px;margin-left:5px;cursor: pointer;' src='img/p1.png'></div>
<input type='submit' style='width: 110px;margin-left: 20px;' id='button_product' name='go_to_cart_zakaz' value='Заказать'>
<p id='product_desc'><?=$inf['desc'];?></p>
 
 
<script type="text/javascript">(function() {
  if (window.pluso)if (typeof window.pluso.start == "function") return;
  if (window.ifpluso==undefined) { window.ifpluso = 1;
    var d = document, s = d.createElement('script'), g = 'getElementsByTagName';
    s.type = 'text/javascript'; s.charset='UTF-8'; s.async = true;
    s.src = ('https:' == window.location.protocol ? 'https' : 'http')  + '://share.pluso.ru/pluso-like.js';
    var h=d[g]('body')[0];
    h.appendChild(s);
  }})();</script>
<div class="pluso" data-background="none;" data-options="medium,square,line,horizontal,nocounter,sepcounter=1,theme=14" data-services="vkontakte,odnoklassniki,facebook,twitter,google,moimir"></div>
<script>
    function minus(){
        if(document.getElementById('numb_product_cart').value>1)
          document.getElementById('numb_product_cart').value--;
    }
    function plus(){
        if(document.getElementById('numb_product_cart').value<999)
            document.getElementById('numb_product_cart').value++;
    }
</script>
</post>
Добавлено через 47 минут
Решил!
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Константа для Include
define("CONST_RUFUS", true);
# Старт буфера
@ob_start();
switch($uri)
{
    case 1 : include("inc/index.php"); break;
    case 2 : include("inc/catalog.php"); break;
    case 3 : include("inc/product.php"); break;
    case 4 : include("inc/about.php");  break;
    case 5 : include("inc/contact.php"); break;
    case 7 : include("inc/pay.php");  break;
    default : echo "<script>window.location.href='/404'</script>";
}
$content = ob_get_contents();
 
# Очищаем буфер
ob_end_clean();
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
16.12.2015, 19:44
И в чем решение поясните? не судьба использовать include_once? и просили исправить г**но-код, а сами еще усугубляете...Для чего ошибки подавляете перед буферизацией?)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.12.2015, 19:44
Помогаю со студенческими работами здесь

Считывание лишнего элемента
#include &lt;stdio.h&gt; int main(void) { printf(&quot;Count:\n&quot;); int count; scanf(&quot;%d&quot;, &amp;count); printf(&quot;Input:\n&quot;); int...

Вывод лишнего элемента NewItemPlaceHolder
суть дела такова: есть таблица с деятелями культуры. эти лист, который является ItemsSource для DataGid. у каждого объекта этого листа...

Очень много лишнего в коде но без этого "лишнего" не работает
Сильно не пинайте я месяц как Delphi изучаю. Заранее благодарен. procedure TForm1.Button1Click(Sender: TObject); begin if...

Списки. Инициализация, добавление элемента в начало и после другого элемента. Удаление элемента
uses crt; type list= ^item; item=record data: integer; next:list; end; var l:list; procedure print;

на структуры. Как определить сдавших сессию на 4 и 5 по ФИО и оценки по 4 предметам за последнюю сессию?
:scratch:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru