Skocz do zawartości

Nadpisywanie pliku


Rekomendowane odpowiedzi

Napisałem shoutbox, problem w tym, że posty nie dodają się, tylko cały plik z logiem się nadpisuje. Np był post:

Żul: Siema co tam?

Ja odpowiem:

Mazo: A nic. A co u cie?

i post Żula się usuwa a moj wchodzi.

kod jest taki:

$log=fopen('book_log.mws','r+'); //otwiera plik z logiem
$nick=htmlspecialchars($nick); //zamienia znaki html z nicku jezeli sa na zwykly tekst
$msg=htmlspecialchars($msg); //zamienia znaki html z msg-a jezeli sa na zwykly tekst 
$all="<b>".$nick.":</b> ".$msg."<br><br>"; //wsadza do $all koncowy kod posta
$oth=fread($log,filesize($log)); //wsadza do $oth to co dotyhczas bylo w pliku
$tow=$all.$oth; //wsadza do $tow: $all połączone z $oth
fwrite($log,$tow); //wpisuje $tow do pliku

Co tu poprawić? Bo dałem że ma pisać post + to co wczesniej bylo.

Odnośnik do komentarza
Udostępnij na innych stronach

'r' Otwiera tylko do odczytu; umieszcza wskaźnik pliku na jego początku.

'r+' Otwiera do odczytu i zapisu; umieszcza wskaźnik pliku na jego początku.

'w' Otwiera tylko do zapisu; umieszcza wskaźnik pliku na jego początku i obcina plik do zerowej długości. Jeśli plik nie istnieje to próbuje go utworzyć.

'w+' Otwiera do odczytu i zapisu; umieszcza wskaźnik pliku na jego początku i obcina plik do zerowej długości. Jeśli plik nie istnieje to próbuje go utworzyć.

'a' Otwiera tylko do zapisu; umieszcza wskaźnik pliku na jego końcu. Jeśli plik nie istnieje to próbuje go utworzyć.

'a+' Otwiera do odczytu i zapisu; umieszcza wskaźnik pliku na jego końcu. Jeśli plik nie istnieje to próbuje go utworzyć.

'x' Tworzy i otwiera plik tylko do zapisu; umieszcza wskaźnik pliku na jego początku. Jeśli plik juz istnieje, wywołanie fopen() nie powiedzie się, zwróci FALSE i wygeneruje błąd na poziomie E_WARNING. Jeśli plik nie istnieje, spróbuje go utworzyć. To jest równoważne z określeniem flag O_EXCL|O_CREAT stosowanym w wywołaniu systemowym open(2).

'x+' Tworzy i otwiera plik odczytu i zapisu; umieszcza wskaźnik pliku na jego początku. Jeśli plik juz istnieje, wywołanie fopen() nie powiedzie się, zwróci FALSE i wygeneruje błąd na poziomie E_WARNING. Jeśli plik nie istnieje, spróbuje go utworzyć. To jest równoważne z okresleniem flag O_EXCL|O_CREAT stosowanym w wywołaniu systemowym open(2).

www.php.net ;)

Odnośnik do komentarza
Udostępnij na innych stronach

O, pardon, mój błąd. Myślałem, że to wina tego. Tak czy inaczej ładnie namotałeś w tym kodzie. A wystarczyłoby:

<?php
$plik = "log.txt"; // Nazwa pliku

$file = fopen( $plik, "r+" ); // Otwieranie pliku do odczytu i zapisu
fwrite( $file, "<b>".htmlspecialchars( $_GET['nick'] )."</b>: ".htmlspecialchars( $_GET['msg'] )."<br/>\r\n".file_get_contents( $plik ) ); // Zapisywanie w pliku odpowiedniego tekstu
fclose( $file ); // Zamknięcie pliku
?>

Odnośnik do komentarza
Udostępnij na innych stronach

jest nadal tak samo. napisze "Mazo: no siema Mazo2" a potem "Mazo2: no siema Mazo1" i ten pierwszy post sie usunie a na jego miejsce wchodzi drugi od Mazo2.

 

i jeszcze dodam jedno pytanie: Jaka jest funkcja w php tak jak w gm-ie string_count?

 

 

edit:

http://www.bymazo.yoyo.pl/book.php

Hasło: haslonasb2

 

napiszcie cos i zobaczycie

Odnośnik do komentarza
Udostępnij na innych stronach

Cały kod od send.php:

<?
$nick=$_POST['nick'];
$msg=$_POST['msg'];
$pass=$_POST['pass'];
if ($pass!=='haslonasb2')
{
echo"<script language='JavaScript'>alert('Podałe¶ złe hasło! Wpisz prawidłowe!')</script>";
include('book.php');
exit;
}
if ($nick=='' || $msg=='')
{
echo"<script language='JavaScript'>alert('Które¶ z pól jest puste! Wypełnij je!')</script>";
include('book.php');
exit;
}
if (strlen($msg)>=301 || strlen($nick)>=21)
{
echo"<script language='JavaScript'>alert('Twoja wiadomo¶ć lub/i nick s± za długie! Skróć je!')</script>";
include('book.php');
exit;
}
$log=fopen('book_log.mws','r+');
fwrite($log,"<b>".htmlspecialchars($nick)."</b>: ".htmlspecialchars($msg)."<br/>\r\n".file_get_contents($log));
fclose($log);
include('book.php');
echo"<script language='JavaScript'>alert('Post został dodany!')</script>";
?>

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

$log=fopen('book_log.mws','r+');
fwrite($log,"<b>".htmlspecialchars($nick)."</b>: ".htmlspecialchars($msg)."<br/>\r\n".file_get_contents($log));

 

na

 

$log=fopen('book_log.mws','r+');
fwrite($log,"<b>".htmlspecialchars($nick)."</b>: ".htmlspecialchars($msg)."<br/>\r\n".file_get_contents('book_log.mws'));

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...