Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]KOMENTARZE
Forum PHP.pl > Forum > Przedszkole
Mictlan77
Witam wszystkich serdecznie. Nazywam się Krystian. W PHP jest że to tak ujmę kompletnie zielony. Dopiero zaczynam przygodę z nim. Otóż sprawa rozchodzi sie mianowicie o system komentarzy. Ściągnąłem gdzieś z sieci gotowy system komentarzy [delikatnie go modyfikując]. Wygląda on juz na stronie następująco: http://mictlan77.prv.pl/comments.php
Sam kod wygląda tak:
  1. <form action="" method=post>
  2. <input type=hidden name=submit value=1>
  3. Nick:<br>
  4. <input type=text name=name><br>
  5. Wpisz komentarz:<br>
  6. <textarea name=message rows="3" cols="50"></textarea><br>
  7. <input type="image" src="img/wyslij.jpg" alt="Wyślij"><br>
  8. </form>
  9.  
  10.  
  11. <br><?php
  12. if (isset($_POST['submit'])) {
  13. if (isset($_POST['message'])) {
  14. if (isset($_COOKIE['dodano'])) {
  15. echo "Już dodałeś/łaś komentarz! Spróbuj za chwilę.<br>";
  16. } else {
  17. $message = str_replace('www','*',$_POST['message']);
  18. $message = ereg_replace("rnrn", "n<P>", $message);
  19. $date=date("H:i d.m.Y");
  20. $message = "<B>".$_POST['name']."</B>, ".$date."<BR><FONT SIZE=1 FACE=VERDANA COLOR=WHITE><B>".$message."</B></FONT><HR COLOR=RED WIDTH=435 ALIGN=LEFT><BR>";
  21. $fp = fopen (basename($_SERVER['PHP_SELF']) . ".comment", "a");
  22. fwrite ($fp, $message);
  23. fclose ($fp);
  24. setcookie ("dodano", "{$_POST['name']}", time()+300);
  25. }
  26. }
  27. }
  28. @readfile(basename(($_SERVER['PHP_SELF'] . ".comment")));
  29. ?>


Zmieniłem to tak aby to "ładnie" wyglądało i komponowało się ze stroną. Szczerze przyznam, że nie wiem do czego służy w tym kodzie 95% komend. Wszystko było by dobrze, gdyby nie małe ALE. Ludzie piszą komentarze i fajnie, ale nie wiem np kto jest kto. Chciałbym wprowadzić dodatkowe pole mianowicie coś takiego jak "e-mail" tej osoby, lecz żeby nie był on widoczny dla innych osób. Zależało by mi, aby działało to tak, że bez podania e-maila nie będzie można wysłać komentarza i było zablokowane w sposób, że należy podać maila, a nie jakieś inne słowo.
Oraz najważniejsze chciałbym, aby ktoś mógł mi rozpisać co znaczy linijka po linijce w kodzie powyżej chciałbym wiedzieć jak działa coś co mam na stronie. Liczę na pomoc, bo jest to dla mnie bardzo ważne. Pozdrawiam.
trucksweb
przede wszystkim zainteresuj sie tematem skoro chcesz cos w nim robic.
odpowiedzi na wszelkie pytania znajdziesz:
http://php.net.pl/manual/pl/index.php

wpisujesz nazwy funkcji i wiesz co oznacza dana linijka

-co do zmian, powiem ktrotko;
musisz dodac kolejne pole typu <input> do formularza i po stronie php walidowac czy jest tam wpisany adres email w postaci %@% -gdzie % oznacza dowolny ciag znakow.- najprosciej mowiac.

Twoj post bardziej podpada pod rpace oferowana, zwlaszcza ze oczekujesz gotowego rozwiazania
Mictlan77
ale ja pisałem że jestem zielony w PHP więc chyba trzeba jakoś zacząć... a poza tym właśnie po to żeby wiedzieć cokolwiek a przynajmniej w tym skrypcie to chyba ktoś jakoś mi musi to wytłumaczyć ;] a za WWW dzięki winksmiley.jpg
EDIT: Czyli w tej pierwsze części muszę dodać pole typu <input> i nie zmieniając nic w pierwszej części tylko zapisując do pliku będę miał e-maila widocznego dla mnie, ale nie dla innych?
Savage.Mephisto
Walidację adresu e-mail można załatwić np. taką funkcją:

Kod
function validMail($email) {

    if (eregi("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$", $email)) return true;
    else return false;

}
pgrzelka
Kod
<?php
if (isset($_POST['submit'])) {  // jeśli ktoś kliknął przycisk Wyślij
if (isset($_POST['message'])) { // jeśli zmienna zawierająca komentarz nie jest pusta
if (isset($_COOKIE['dodano'])) { // jeśli w cookie jest zapisane że już komentowałeś to wyświetl komunikat
echo "Już dodałeś/łaś komentarz! Spróbuj za chwilę.<br>";
} else { // w przeciwnym wypadku działamy dalej
$message = str_replace('www','*',$_POST['message']); // usuwanie 'www' z wiadomości
$message = ereg_replace("rnrn", "n<P>", $message);  // zamiana nowych lini na <p>  
$date=date("H:i d.m.Y"); // przypisanie daty do zmiennej

// tu formatujesz wiadomość
$message = "<B>".$_POST['name']."</B>, ".$date."<BR><FONT SIZE=1 FACE=VERDANA COLOR=WHITE><B>".$message."</B></FONT><HR COLOR=RED WIDTH=435 ALIGN=LEFT><BR>";

$fp = fopen (basename($_SERVER['PHP_SELF']) . ".comment", "a"); // otwierasz plik z komentarzami
fwrite ($fp, $message);  // zapisujesz do niego
fclose ($fp); //zamykasz plik
setcookie ("dodano", "{$_POST['name']}", time()+300); // ustawiasz cookie uniemożliwiające dodanie następnego komentarza
}
}
}
@readfile(basename(($_SERVER['PHP_SELF'] . ".comment")));  // wyświetlasz wszystkie komentarze
?>


dobry humor mam to opisałem trochę ten kodzik php smile.gif

teraz jak to edytować? wiesz co to są zmienne? jak nie to nie czytaj dalej tylko poszukaj jakiegoś kursu php smile.gif

zmienną $message musisz zmienić na coś takiego np.

$message = "<B><a href=\"mailto:".$_POST['email']."\">".$_POST['name']."</a></B>, ".$date."<BR><FONT SIZE=1 FACE=VERDANA COLOR=WHITE><B>".$message."</B></FONT><HR COLOR=RED WIDTH=435 ALIGN=LEFT><BR>";

a w formularzu dodać <input type="text" name="email" />

dalej myśl sam smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.