Кой последно е влизал ? от регистрацията..

Rex

Registered
Ползвам тази регистрация: http://web-tourist.net/login/login/view.php?st=360

искам да се направи така, че:

някой като влезе да се записва името му в някакъв текстов файл. (може би с: <? echo $user ?>. И ако някой друг влезе да мине на първо място от влизалите. Например:

Рекс влиза, във файла се записва Рекс.

/това да е файла:
Рекс
/
После влиза Мекс, във файла се записва Мекс.

/това става във файла:
Мекс, Рекс
/

После влиза Иван, записва му се името

/така да изглежда файла:
Иван, Мекс, Рекс
/

и вече аз с iframe да си ги изкарам в страницата.






Знам че е лесно, но не съм навътре с php-то.


ПС: юзър името се показва с кода: $user . Ето примерен код: <? $user ?> (така ще се покаже името на регистрирания юзър в страницата)

Благодаря !
 

Rex

Registered
бе незнам да ти кажа чесно.. влизам с 1 юзър показва го, влизам с друг не го показва.. рефрешвам нищо неправи... :< не ме записва.. защо така ?
 

Rex

Registered
преди малко влезе едно момче (приятел) и не го записва... защо така...

нали знаеш че този файл седи на моя комп с определено ip. Друг го отваря този файл и се прави request и го отваря от моето ip пък то вече е отворено от него ip и показва само моето име.. нехваща другото.. пфф.. немога да го измисля как да го обесня.. мисля че знам защо нестава... но съм сигурен че има някой друг начин... а може и да греша де... но все пак има и друг начин :oops: :oops: :oops: [/i]
 

sizif

Registered
Здравей!

С
$opendb = fopen($db,"r+");
не става, защото поствя показалеца за четене и писане в началото на файла като докато пише, изтрива толкова редове, колкото записва. Имаше подобно питане тук преди време...

По добре вместо r+, задай стойност при отваряне на файла a+. Така показалеца ще е в края на низа и ще можеш да добавяш нови записи спокойно. Те ще излизат в края, но при четенето ( с функцията file(); и обръщане на поредността в получения масив) ще може да ги листваш в обратен ред.

Записът - по примера на vesku:

$db = "фаила";
$opendb = fopen($db,"a+");
fwrite($opendb,"\n $user");
fclose($opendb);


Където $opendb ти е идентификатора на файла (името е избрано от vesku произволно), използваме същата променлива, за да затворим файла след операцията. Добре е файловете да се затварят :) Заради начина, по който ще се чете (виж по-долу), правим всеки запис на нов ред - \n

А ето как ще ти изглежда кодът, който ще чете от същия файл и ще сменя подредбата на имената, така че най-новите да са най-отгоре:

<?
if (file_exists ("файла")) \\проверяваме дали файла съществува, ако да...
{
$filelocation="файла";
$fm=file("$filelocation"); \\четем с файл(); - всеки ред става елемент в масива $фм

$spisyk=array_reverse($fm); \\чрез функцията в зелено обръщаме поредността на елементите в масива $фм[], така че последният ред (най-новия запис) да стане първи и т.н. Функцията създава нов масив, наричаме го $spisyk

$kolko=count($spisyk); \\броим колко са елементите (редовете - на всеки ред по едно име)

for ($i=0; $i<$kolko; $i++) \\с цикъл фор обхождаме масива - конструкцията е стандартна
{
$red=$spisyk[$i];
echo "<BR>$red"; \\и листваме редовете един по един
}

}
else \\ако файла не съществува, изписваме:
{
echo "<BR>Няма направени записи!";
}
?>


Демо (правено с форма по друг повод):
http://probna.awardspace.com/demo3/forma.htm

Предивд това, че сигурно ще искаш да триеш редове, можеш да погледнеш и тази тема:

http://www.web-tourist.net/forum/viewtopic.php?p=28208&highlight=#28208

На Smirnoff допълвах кода със синхронизиране на изтриването при подобно обръщане, можеш да му пишеш. Предполагам, че ако ползва още същия скрипт, няма да откаже да ти го даде.

Толкова от мен.
Успех!
 

Горе