1

Тема: Запис тексту в файл засобами php

Всім привіт. Зразу скажу в PHP не сильний тому прошу допомоги.

Є простий сайт візитка на 1 сторінку HTML. Мені потрібно, щоб додавася текст з іншого файлу на індексну сторінку.

Спочатку і по деталях:

Користувач заходить на сайт. Перевіряємо його по рефереру. Якщо він прийшов з гугла, то через певний час (скажем секунд 30)  додаємо певний текст на індексту сторінку і перезаписуємо її. Ніякої бази мускула не порібно. Простий PHP.

// відкриваєм
$f = fopen("index.html", "w"); //index.php точно незнаю яке потрібно розширеня

$text = array( // список користувачів, їх буде 1-2 на місяць тому бази не потрібно, додаватись будуть в ручному режимі з даного масиву.
"Taras" => array(
            "name" =>"Taras",
            "email" => "email@mail.com",
            "comments" => "Description Taras"
            ),
"Oleg" => array(
            "name" =>"Oleg",
            "email" => "Oleg@mail.com",
            "comments" => "Description Oleg"
            ),
);

fwrite ($f, $text); //Але тут потрібно написати умову, щоб не повторювались користувачі

В результаті чого при перезавантаженні сторінки (навіть тимже користувачем через вказаний час 30 сек) було видно його дані які записались з файлу з масиву, який вже попереньо був наповнений данними.

Незнаю чи доступно поясний то, що хотів.

Якщо хтось і зможе цей чудо скрипт написати буду вельми вдячний або хотяби частинами, можливо і сам доклепаю якщо буде з чого.
Дякую.

2

Re: Запис тексту в файл засобами php

А це нічого, що в файл запишеться ось таке:

a:2:{s:5:"Taras";a:3:{s:4:"name";s:5:"Taras";s:5:"email";s:14:"email@mail.com";s:8:"comments";s:17:"Description Taras";}s:4:"Oleg";a:3:{s:4:"name";s:4:"Oleg";s:5:"email";s:13:"Oleg@mail.com";s:8:"comments";s:16:"Description Oleg";}}

?
Та й для запису вашого масиву в файл треба писати таке:

file_put_contents("index.html", serialize($text));

3

Re: Запис тексту в файл засобами php

Invader написав:

А це нічого, що в файл запишеться ось таке:

Нічого.... головне щоб працювало.....

4 Востаннє редагувалося Invader (29.04.2013 20:23:08)

Re: Запис тексту в файл засобами php

Спробуйте. Може навіть запрацює:

<?php
$text = array( // список користувачів, їх буде 1-2 на місяць тому бази не потрібно, додаватись будуть в ручному режимі з даного масиву.
"Taras" => array(
"name" =>"Taras",
"email" => "email@mail.com",
"comments" => "Description Taras"
),
"Oleg" => array(
"name" =>"Oleg",
"email" => "Oleg@mail.com",
"comments" => "Description Oleg"
),
);
file_put_contents("index.html", serialize($text));
$allText = file_get_contents('index.html');
array_walk($text,'t');

function t($a){
    global $allText;
    if (stripos($allText, $a['name']) === false){
        file_put_contents($a['name']."\t".$a['email']."\t".$a['comments']."\n", FILE_APPEND | LOCK_EX);
    }
}

Але файл кожен раз буле перезаписуватися вмістом масиву $text. Так що перевірка вмісту файла на унікальність імені не має смислу. Тоді вже треба контролювати запис даних з масиву в файл; і слідквати за тим щоб до файлу не потрапили однакові імена. Або перед записом масиву видалити з нього повторювані імена, залишивши тільки одне.

5

Re: Запис тексту в файл засобами php

дякую, але я на початку писав шо не сильний в PHP, як тепер це все запхати в індексну сторінку. Підключаю файл інклудом, а як вивести дані з масиву?

<?php 
echo //тут незнаю шо написати

?>

6

Re: Запис тексту в файл засобами php

ПОтрібен код який пройдеться по масиву і зробить так щоб імена вкладених масивів були унікальними а потім заише те що вийшло в файл?

7

Re: Запис тексту в файл засобами php

Е-е-е-м…

<?php
print_r($text);
?>

Виведе масив на екран.

8

Re: Запис тексту в файл засобами php

Або ще так:

foreach ($text as $s){
    echo $s['name']."\n".$s['email']."\n".$s['comments']."\n";
}

тільки "\n" замінити на '<br/>' якщо в броузері.

Або так:

foreach ($text as $user){
    foreach ($user as $info){
        echo $info."\n";
    }
}

9

Re: Запис тексту в файл засобами php

скажем так..... мені потрібно на хтмльну сторінку додавати блок "коментарі".

Коментарі будуть братись уже з заготовленого файлу, про який Ви писали пище. Коментарі будуть зявлятись тільки в тому випадку коли юзер прийшов з певного сайта. Якшо він просто зайшов на сайт наравши його адрес в броузері, то коменти не будуть додаватись... Ось що мені потрібно.....

Якщо зможете це все правильно організувати без венегороди не залишитесь...

10 Востаннє редагувалося Invader (30.04.2013 21:58:47)

Re: Запис тексту в файл засобами php

І щодо коментарів незрозуміло. Потрібно записувати коментарі в файл index.html? Коментарі мають бути від різних користувачів і якщо вже є коментар від користувача, то додавати його ще раз не потрібно?

11

Re: Запис тексту в файл засобами php

так має бути ніби імітація коментарів. Фактично їх не буде, вони будуть додаватись уже з заготовленого файлу. Так повторятись вони не повинні.

Я десь бачив таку фішку, але знайти її неможу...

12 Востаннє редагувалося Invader (01.05.2013 22:09:14)

Re: Запис тексту в файл засобами php

<?php
session_start();
if (!isset($_SESSION["referer"])){
    $_SESSION["referer"] = $_SERVER["HTTP_REFERER"];
}

$text = array( // список користувачів, їх буде 1-2 на місяць тому бази не потрібно, додаватись будуть в ручному режимі з даного масиву.
"Taras" => array(
"name" =>"Taras",
"email" => "email@mail.com",
"comments" => "Description Taras"
),
"Oleg" => array(
"name" =>"Oleg",
"email" => "Oleg@mail.com",
"comments" => "Description Oleg"
),
);

# якщо в $_SESSION['referer'] міститья підрядок google, будем вважати
# що таки звідти
if (stristr($_SESSION['referer'], 'google') !== false){
# отримати ключі масиву
$keys = array_keys($text);
for ($i=0; $i < count($text); $i++){
    # оскільки масив $text асоціативний, то викор. елементи масиву $keys
    $buf = $text[$keys[$i]]['comments'];
    # Другий цикл for потрібен для порівняння відносно всіх елементів масиву
    for ($j=0; $j < count($text); $j++){
        # уникаємо порівняння елементів масиву $text відносно самих себе
        if ($i != $j){
            if ($buf === $text[$keys[$j]]['comments']){
                # Елемент з масиву видаляється. Масив змінюється на місці
                unset($text[$keys[$j]]);
            }
        }
    }
}
sleep(30);
file_put_contents("index.html", serialize($text));
}
?>

13

Re: Запис тексту в файл засобами php

підключив до голої сторінки... з сесіями нехоче працювати, пише шо неможе відправити куки, тому цей радок закоментував, (на локалці пробував)

 //   if (!isset($_SESSION["referer"])){
  //  $_SESSION["referer"] = $_SERVER["HTTP_REFERER"];
  //  }

після оновлення сторінки файл індекс повністю перезаписався. Тобто всі теги HTML і текст пропали, а записалось ось це

a:2:{s:5:"Taras";a:3:{s:4:"name";s:5:"Taras";s:5:"email";s:14:"email@mail.com";s:8:"comments";s:17:"Description Taras";}s:4:"Oleg";a:3:{s:4:"name";s:4:"Oleg";s:5:"email";s:13:"Oleg@mail.com";s:8:"comments";s:16:"Description Oleg";}}

14

Re: Запис тексту в файл засобами php

Ну шодо сесій я не знаю. А от щодо всього іншого, то так і має бути.
для того щоб файл не перезаписувався потрібно написати так:

file_put_contents("index.html", serialize($text), FILE_APPEND | LOCK_EX);

Дані будуть додані в кінець файлу.