За последние 24 часа нас посетил 108851 программист и 5635 роботов. Сейчас ищут 1763 программиста ...

Помогите пожалуйста с сесией

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

  1. ArtemPetesburg

    ArtemPetesburg Новичок

    С нами с:
    11 май 2018
    Сообщения:
    48
    Симпатии:
    2
    Адрес:
    Санкт-Петербург
    Здравствуйте, дело обстоит в том что делаю дипломную работу интернет магазина, и есть два файла, страница вывода товаров head.php и страница куда переходить через GET параметр на определенный товар. Сессия запускается на странице head.php тойсть вот на этой.
    [​IMG]
    Вот код.
    Код (Text):
    1. <html>
    2. <head>
    3. <link rel="stylesheet" href="styles.css" media="all">
    4. </head>
    5. <body>
    6. <?php
    7.     require_once ('menu.php');
    8.     require_once ('db.php');
    9.    
    10.     session_start();
    11.         $_SESSION['auth'] = true;
    12.        
    13.             if (!empty($_SESSION['login'])) {
    14.        
    15.                 echo 'Привет, '.$_SESSION['login'];
    16.    
    17.             }
    18.                 else {
    19.                     echo "Привет Гость";
    20.                 }
    21.        
    22.     function get_post () {
    23.        
    24.         global $link;
    25.        
    26.         $sql = "SELECT * FROM head ORDER BY `id` DESC";
    27.            
    28.         $result = mysqli_query($link, $sql);
    29.        
    30.         $posts = mysqli_fetch_all($result, MYSQLI_ASSOC);
    31.        
    32.         return $posts;
    33.     }
    34.     $posts = get_post();
    35.    
    36.    
    37.     foreach ($posts as $post):
    38.    
    39.     ?>
    40.    
    41.     <div class="korobka">
    42.     <div class = "title">
    43.     <h4><a class = "zag" href="./post.php?post_id=<?=$post["id"]?>"><?=$post["title"]?></a></h4>
    44.     </div>
    45.     <br><br>
    46.     <div class = "photo">
    47.     <?php
    48.     if (!empty ($post['image'])) {
    49.         $image = $post['image'];
    50.  
    51.     echo "<p><img class = 'img' src=\"./image/$image.jpg\"></p>";
    52.     }
    53.     ?>
    54.     </div>
    55.     <?=mb_substr($post["text"], 0, 220). '...'?>
    56.     <div class = "cena">
    57.    
    58.     <?=$post["cena"].'рублей'?>
    59.     </div>
    60.     <div>
    61.     <a href="./post.php?post_id=<?=$post["id"]?>" class="button28"> Читать полностью</a>
    62.     </div>
    63.    
    64.     </div>
    65.    
    66.     <?php
    67.     endforeach
    68.    
    69.        
    70.     ?>
    71.     </body>
    72.     </html>
    Но при переходе на страницу товара запустить не удается. А точнее на post.php
    Вот выдает такую ошибку. Мне кажется что на это влияет гет параметр который присваивается данной странице, но могу и ошибаться.
    [​IMG]
    Код (Text):
    1. <html>
    2. <head>
    3. </head>
    4. <body>
    5. <?php
    6. require_once ('db.php');
    7. require_once ('menu.php');
    8. require_once ('galerea.html');
    9.  
    10.     session_start();
    11.             $_SESSION['auth'] = true;
    12.  
    13. $post_id = $_GET["post_id"];
    14.  
    15. function get_post($post_id) {
    16.    
    17.     global $link;
    18.    
    19.     $sql = "SELECT * FROM `head` WHERE id = " . $post_id;
    20.    
    21.     $result = mysqli_query($link, $sql) or die(mysqli_error($link));
    22.    
    23.     $post = mysqli_fetch_assoc($result);
    24.    
    25.     return $post;
    26. }
    27. ?>
    28.  
    29. <?php
    30.  
    31.     $post = get_post($post_id);  
    32.    
    33. ?>
    34. <h4><?=$post["title"];?></h4>
    35.     <!--<?php
    36.     if (!empty ($post['image'])) {
    37.         $image = $post['image'];
    38.  
    39.     echo "<p><img src=\"./image/$image.jpg\" width='750' height='750'></p>";
    40.     }
    41.     ?>-->
    42.  
    43.     <div class="wrapper">
    44.         <div class="slider">
    45.             <ul>
    46.                 <li><img src="image/<?=$image?>.jpg" alt="" /></li>
    47.                 <li><img src="i/2.jpg" alt="" /></li>
    48.                 <li><img src="i/3.jpg" alt="" /></li>
    49.                 <li><img src="i/4.jpg" alt="" /></li>
    50.             </ul>
    51.         </div>
    52.     </div>
    53.     <br>Цена<?=$post["cena"].'рублей'?>
    54.     <br>
    55.     <form action='' method='Post'>
    56.     <select name="kup">
    57.         <option>Выберите из списка</option>
    58.         <option value="1" >head</option>
    59.         </select>
    60.         <input type='submit' value='Купить'>
    61.     </form>
    62.     <br>
    63. <?=$post["text"];?>
    64. <?php
    65.  
    66.  
    67.  
    68.  
    69.             if ( !empty($_REQUEST['kup'])){
    70.                 echo "Купим, купим не бойся";
    71.                 $nametovar = $post["title"];
    72.                
    73.                 $query = 'INSERT INTO karzinka SET nametovar="'.$nametovar.'"';
    74.                 mysqli_query($link, $query); //ответ базы запишем в переменную $result
    75.                
    76.             }
    77.    
    78.    
    79.    
    80.    
    81.     ?>
    82. </body>
    83. </html>
    Помогите разобраться почему не запускается моя сессия на странице с гет параметром и как мне это сделать... Буду очень благодарен... заранее огромное спасибо.
    Вот ошибка которую выдает:
    Warning: session_start(): Cannot start session when headers already sent in C:\xampp\htdocs\tetst\post.php on line 10

    :p:oops:
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.862
    Симпатии:
    657
    Сессию нужно стартовать до начала вывода.

    С БД тоже крайне желательно работать до начала вывода.
    --- Добавлено ---
    Про SQL-инъекции почитайте.
     
    ArtemPetesburg нравится это.
  3. ArtemPetesburg

    ArtemPetesburg Новичок

    С нами с:
    11 май 2018
    Сообщения:
    48
    Симпатии:
    2
    Адрес:
    Санкт-Петербург
    Елки, алки из за ээтого? Спасибо огромное просто переместил наерх и все заработало, спасибо вам огромное, проблема решенна... вы меня выручили... вот такая оплошность кога не знал, а про SQL инъекции обязательно прочту с утречка
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.862
    Симпатии:
    657
    Еще наличие $_SESSION['login'] само по себе может свидетельствовать о факте авторизации. Нет нужды использовать отдельную переменную.
    --- Добавлено ---
    Спокойной ночи.
     
    ArtemPetesburg нравится это.