За последние 24 часа нас посетили 58443 программиста и 1783 робота. Сейчас ищут 825 программистов ...

Как привязать путь к файлу к значению переменной и при открытии станицы выводить сам файл?

Тема в разделе "Прочие вопросы по PHP", создана пользователем TimKa, 23 фев 2017.

  1. TimKa

    TimKa Новичок

    С нами с:
    23 фев 2017
    Сообщения:
    31
    Симпатии:
    0
    PHP:
    1. <?php
    2.  
    3. $pic = include 'picr.php';
    4. $rand = array_rand($pic);
    5. $_SESSION['image'] = setcookie('ipic',$pic[$rand],time()+5400);
    6. printf($rand);
    7. file_put_contents('./pag/targ.txt', $pic[$rand]);
    8. ?>
    --- Добавлено ---
    вот так не адрес вы ходит, а bool true...при VAR_dump, в локалхост, а сервера вообще все зависает, не загружает страницу даже доконца...
     
    #51 TimKa, 3 мар 2017
    Последнее редактирование: 3 мар 2017
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в лог ошибок смотри
    найди сам где он у тебя, гденить лежит
     
    TimKa нравится это.
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  4. TimKa

    TimKa Новичок

    С нами с:
    23 фев 2017
    Сообщения:
    31
    Симпатии:
    0
    log пустой..
     
  5. TimKa

    TimKa Новичок

    С нами с:
    23 фев 2017
    Сообщения:
    31
    Симпатии:
    0
    а я вот подумал)) при работе с сервера когда читается значение из файла(./pag/targ.txt) картинка открывается же!! а почему из сессии и из куков не читает, и вообще куки не отображаются в браузере, как будто и не записывалось туда ни чего, а с локалхост записывается и выводит!!! в логе эрор пусто...
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    может куки неправильно ставишь, может живут мало, может смотришь не там
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    найди 2 отличия

    мой код:
    PHP:
    1. $rand = array_rand($paths, 2);
    2. $_SESSION['image'] = $paths[$rand[0]];
    твой код
    PHP:
    1. $pic = include 'picr.php';
    2. $rand = array_rand($pic);
    3. $_SESSION['image']=setcookie('ipic',$pic[$rand],time()+5400);
    1. в $rand ты пишешь случайное значение массива $pic, у $rand будет текстовое значение, читай документацию по функции array_rand, я же в $rand получаю массив с двумя ключами в значениях массива
    2. $pic[$rand] ты пытаешься получить значение из массива $pic по ключу, передав одно случайное значение массива вместо ключа, которое ты получил через array_rand($pic). Логика нарушена, ты получаешь случайное значение, потом пытаешься найти ключ с таким значением, когда у тебя ключи просто цифры от 0 и так далее. Это можно представить так, в библиотеки все книги имеют номер, ты берёшь с полки книгу и идёшь к библиотекарю и говоришь, что книга это номер книги.
    Почитай по array_rand когда ты не передаёшь второй аргумент этой функции, то она возвращает случайное значение массива, но если указать число 2 и больше, то она вернёт массив где ключи будут просто от 0 до 1, а вот значения этого массива будут ключи из твоего массива $pic к которому ты хочешь обратиться.

    PHP:
    1. $pic = [
    2.     '1' => '1.jpg',
    3.     '2' => '2.jpg',
    4.     '3' => '3.jpg',
    5. ];
    6. $rand = array_rand($pic, 2);
    7.  
    8. /*
    9. Значение $rand
    10. $rand = [
    11.     '0' => '3',
    12.     '1' => '2',
    13. ];
    14. */
    15.  
    16. $pic[ 3 ]; // Значение 3.jpg
    17. $rand[ 0 ]; // Значение 3
    18. $pic[ $rand[ 0 ] ]; // // Значение 3.jpg то же самое что и $pic[ 3 ] так как $rand[ 0 ] вернёт 3
    я выбираю с помощью array_rand два случайных ключа массив $pic чтобы функция вернула мне именно ключи, а не значения, потому что эта функция не возвращает 1 случайный ключ, она вернёт одно случайное значение, а мне нужен ключ из $pic.

    3. Тут опять не логично
    PHP:
    1. $_SESSION['image'] = setcookie('ipic',$pic[$rand],time()+5400);
    по документации setcookie тебе вернёт true или false, зачем эти два возможных значения приравнивать к массиву $_SESSION['image'] мне не понятно, могу только попробовать угадать, ты хотел просто установить cookie c значением картинки и отдельно записать это значение в сессию, но тогда нужно значение передавать в сессию, а не true или false
    PHP:
    1. $_SESSION['image'] = $pic[$rand];
    2.  
    3. setcookie('ipic',$pic[$rand],time()+5400);
    но и это имеет мало смысла, зачем одно и тоже и в сессию и в cookie или ты это от безнадёжности?
     
    TimKa нравится это.
  8. TimKa

    TimKa Новичок

    С нами с:
    23 фев 2017
    Сообщения:
    31
    Симпатии:
    0
    сорри за отсутствие.
    ТОЧНО!!!
    --- Добавлено ---
    Так в принципе все работает, я уже писал выше... но только получается что сайтом можно пользоваться по очереди)), иначе пользователям будет выводится одно и тоже значение(ИЗО). Чтобы этого избежать решил сломать мозг чтобы у каждого было свое значение, для чего решил передать его в сессию или в куки, но сталкнулся с тем что на локалхост все работает идеально и через сессию и через куки, а когда заливаю на сервер, не работает. Смотрю в куки а они даже не записаны. Сейчас приведу код как я это делаю,еще раз оговорю что на локалхосте все работает.
    --- Добавлено ---
    PHP:
    1. <?php
    2. $pic = include 'picr.php';
    3. $rand = array_rand($pic);
    4. $_SESSION['image'] = $pic[$rand];
    5. printf($rand);
    --- Добавлено ---
    PHP:
    1. <?php
    2. if(!empty($_SESSION['image'])) {
    3. echo '<img src="', $_SESSION['image'] , '">';
    --- Добавлено ---
    Когда делаю вот так:
    Код (Text):
    1. $rand = array_rand($pic, 2);
    2. $_SESSION['image'] = $pic[$rand[0]];
    на странице вывода цифрового значени пишет ARRAY
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    сделай var_dump() переменной которая тебе array сообщает
     
  10. TimKa

    TimKa Новичок

    С нами с:
    23 фев 2017
    Сообщения:
    31
    Симпатии:
    0
    array(102) { ["m20318768"]=> string(31) "pic/20318768/1 здание.jpg" ["m30829354"]=> string(35) "pic/30829354/1 парусник.jpg" ["m10965668"]=>
     
  11. TimKa

    TimKa Новичок

    С нами с:
    23 фев 2017
    Сообщения:
    31
    Симпатии:
    0
    Я как ни чего не понимал та ничего и не понимаю до сих пор)) Пожалуйста прокоментируйте... Я ни чего ни делал ровным счетом, кроме; Оставил только работу сессии как и в прошлый раз, но теперь сначала открыл сайт с хрома(нелокалхост), а потом с лисы(нелокалхост)(в которой все не работало) так вот теперь ВСЁ и везде работает. Где искать суть бывшей проблемы?!))
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    забей

    у меня как-то содержимое файла отличалось от того, что на диске. Вот ебать я тогда напрыгался.
     
    TimKa нравится это.
  13. TimKa

    TimKa Новичок

    С нами с:
    23 фев 2017
    Сообщения:
    31
    Симпатии:
    0
    нет, я для того чтобы в будущем знать, что на эту граблю не наступать лучьше...)) так то мне радостно) но знать хочется...