E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale PHP

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  PHP  /  Introducere in PHP (24)

Realizarea unei carti de oaspeti in PHP

08.05.2010
Realizarea unei carti de oaspeti in PHP

In acest tutorial va voi arata cum sa creati o carte de oaspeti cu ajutorul caruia veti putea adauga comentarii pe site, pornind de la structura HTML a formularului pana la codul PHP. Pentru a parcurge acest tutorial trebuie sa ai cunostiinte de baza de html, lucrul cu fisiere si prelucrarea datelor din formulare.

Total vizualizari: 6933 6933 afisari   |   Comentarii  5   |   Rating   |   (3 voturi)   |   Timp necesar: 25 min 25 min   |   Nivel de cunostiinte necesar: Mediu  Mediu

Autor: mozzartut Expert
Download
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
1
comenteaza printeaza

In acest tutorial va voi arata cum sa creati o carte de oaspeti cu ajutorul caruia veti putea adauga comentarii pe site, pornind de la structura HTML a formularului pana la codul PHP. Pentru a parcurge acest tutorial trebuie sa ai cunostiinte de baza de html, lucrul cu fisiere si prelucrarea datelor din formulare.

Tot ceea ce trebuie sa faceti este sa creati un fisier add_comment.php pe care sa-l includeti pe paginile in care vreti sa apara formularul si comentariile:

Aici poti vedea un demo al formularului pe care il vom realiza.

Ce este cartea de oaspeti?

Cartea de oaspeti reprezinta o metoda de interactiune cu utilizatorii unei pagini web. Cu ajutorul unei carti de oaspeti, utilizatorii pot adauga comentariile si parerile lor cu privire la anumite articole, stiri, editoriale, etc. postate pe site.

Formularul HTML

Iata formularul HTML cu ajutorul caruia vom trimite datele spre procesare:

<form action="<? $PHP_SELF; ?>" method="post">
    <input type="text" name="mesaj" value="<? echo $_POST['mesaj']; ?>" id="comentarii-nume"/><br />
    <textarea name="mesaj2" cols="45" rows="5" id="comentarii-mesaj"><? echo $_POST['mesaj2']; ?></textarea><br />
    <input type="submit" name="trimite_mesaj" value="Trimite" class="btn"/>
</form>

Formularul este unul simplu ce contine doua campuri (pentru nume si mesaj) si buton de submit.

Dupa cum poti observa, datele sunt transmise prin post catre $PHP_SELF, variabila globala ce semnifica fisierul curent (cel care este afisat in bara de navigare a browserului). Aceasta cale este folosita deoarece fisierul add_comment.php poate fi inclus in orice alt fisier php.

Fisierul add_comment.php

Pentru inceput trebuie sa ne asiguram ca formularul trimite comentariile pe pagina dorita cu ajutorul instructiunii basename($_SERVER['SCRIPT_FILENAME']). In acest mod, variabila $titlu_site va contine titlul paginii cu extensia ".php". De exemplu, daca includem "add_comment.php" in fisierul "pagina_mea.php", variabila $titlu_site va fi egala cu "pagina_mea.php".

<?php $titlu_site = basename($_SERVER['SCRIPT_FILENAME']);?>

In acest exemplu, comentariile vor fi stocate in fisiere ".txt" cu acelasi nume cu fisierele .php. De aceea, folosim functia str_replace() pentru a schimba extensia ".php" in ".txt".

<?php // Cu ajutorul functiei str_replace() putem inlatura 
// caracterele pe care nu le dorim in titlu (de exemplu: "_")
$titlu_site = str_replace('_','',$titlu_site);
 
// Utilizam aceeasi functie pentru a schimba extensia ".php" in ".txt"
// Rezultat: "paginamea.txt"
$titlu_site = str_replace('.php','.txt',$titlu_site);
?>

Rezultat: Comentariile vor fi stocate in: "paginamea.txt".

In continuare, formatam data si setam diferenta de fus orar pentru a afisa corect ora Romaniei. In acest sens folosim functia date() si 3 variabile: $data, $ora, $minute. Prima variabila contine ziua (j), luna(M) si anul(Y). A doua variabila contine ora(H), iar cea de a treia minutele (i) si secundele(s).

<?php // Formatam data: j (ziua), M (luna), Y (an)
$data = date('j M Y');
 
// Setam ora Romaniei
$ora = date('H')+7;
 
// Adaugam minutele (i) si secundele (s)
$minute =date('i:s');
?>

Apoi, cream directorul comentarii si deschidem cu functia fopen fisierul ce contine comentariile.

<?php
// In directorul "comentarii" creeam si deschidem fisierul "$titlu_site"
// Exemplu: comentarii/paginamea.txt
$fp = fopen("comentarii/".$titlu_site ." ", "a");
 
// Inchidem fisierul
fclose($fp);
?>

Incepem procesarea datelor trimise de formular odata ce este apasat butonul de submit (trimite_mesaj). Daca unul din campurile nume sau mesaj nu este completat, afisam mesajul de eroare si oprim executia scriptului.

<?php // Verificam daca butonul "trimite_mesaj" a fost apasat
if (isset($_POST['trimite_mesaj'])) {
 
// Daca nu este completat numele si mesajul
if($_POST['mesaj'] == "" && $_POST['mesaj2'] == ""){
 
    // Afisam mesajul de eroare: "Completeaza numele si mesajul."
    // Oprim procesarea datelor
    echo "<div class='eroare'>Completeaza numele si mesajul</div>";
}
 
// Daca nu este completat numele
else if($_POST['mesaj'] == ""){
    
    // Afisam mesajul de eroare: "Completeaza numele."
    // Oprim procesarea datelor
    echo "<div class='eroare'>Completeaza numele</div>";
}
 
// Daca nu este completat mesajul
else if($_POST['mesaj2'] == ""){
 
    // Afisam mesajul de eroare: "Completeaza mesajul."
    // Oprim procesarea datelor
    echo "<div class='eroare'>Completeaza mesajul</div>";
}?>

Daca ambele campuri au fost completate afisam mesajul: "Comentariu adaugat cu succes" si continuam procesarea datelor, respectiv inlaturarea caracterelor html invalide si scrierea in fisierul .txt.

<?php else{
 
// Daca ambele campuri sunt completate (nume si mesaj)
// Continuam procesarea datelor si afisam mesajul "Comentariu adaugat cu succes."
echo "<div class='succes'>Comentariu adaugat cu succes.</div>";
 
// Transformam toate caracterele nesuportate in entitati html
// Exemplu: "<" in "&lt;"
$mesaj = htmlentities($_POST['mesaj']);
$mesaj2 = htmlentities($_POST['mesaj2']);
 
// Optional putem adauga "smiley" cu ajutorul functiei str_replace()
$mesaj2 = str_replace(":D","<img src='comentarii/smiley/1.gif' alt='smiley'/>","$mesaj2");
$mesaj2 = str_replace(":P","<img src='comentarii/smiley/2.gif' alt='smiley'/>","$mesaj2");
$mesaj2 = str_replace(":))","<img src='comentarii/smiley/3.gif' alt='smiley'/>","$mesaj2");
$mesaj2 = str_replace(":)","<img src='comentarii/smiley/4.gif' alt='smiley'/>","$mesaj2");
$mesaj2 = str_replace("=))","<img src='comentarii/smiley/5.gif' alt='smiley'/>","$mesaj2");
 
// Deschidem fisierul si adaugam numele, mesajul si data
$fp = fopen("comentarii/".$titlu_site ." ", "a");
fwrite($fp, "<div class='comentarii-titlu'>
                <div class='comentarii-data'>$data, $ora:$minute</div>
                <div class='comentarii-titlu2'><b>$mesaj</b></div>             
             </div>
             <p class='comentarii-mesaj2'>$mesaj2</p>");
             
// Inchidem fisierul
fclose($fp);
}?>

Iata cum poti include acest script in fisierele tale:

<?php include "add_comment.php"; ?>

si cum putem includem comentariile trimise:

<?php
// Includem comentariile trimise 
include "comentarii/".$titlu_site ." ";
echo "<div class='copyright'>
        <a href='http://mozzartut.isgreat.org' id='copyright'>&copy; mozzartut 2010</a>
      </div>";
?>

Pentru a downloada sursele complete, inclusiv fisierul css si imaginile cu smileys pe care le-am folosit pentru formatare, acceseaza linkul Download din partea de sus a paginii.

Pagina:
1
comenteaza printeaza

Cuvinte cheie:   php,   carte de oaspeti,   guestbook,   comentarii,   formular,   post,   basename,   fisier,   fopen,   date

Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(3 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
COMENTARII (5) spune-ti parerea
ioan489 ioan489 , Vineri, 03 Mai 2013, ora 10:18
#5

Nasol...cod simplu...incomplet...

Raporteaza acest comentariu ca injurios!
alexandra alexandra , Vineri, 11 Iunie 2010, ora 09:37
#4

@alexandyducu

Despre ce variabile este vorba? Ai incercat sa descarci sursa de la download?

Raporteaza acest comentariu ca injurios!
elearn elearn , Vineri, 11 Iunie 2010, ora 09:28
#3

Nu se poate trimite cod html sau php prin casuta de comentarii. Am dezactivat aceasta functionalitate deoarece in trecut au fost atacuri asupra site-ului.

Raporteaza acest comentariu ca injurios!
alexandyducu , Vineri, 11 Iunie 2010, ora 09:15
#2

de ce nu apare mesajul in care trimit cod php?

Raporteaza acest comentariu ca injurios!
alexandyducu , Vineri, 11 Iunie 2010, ora 09:14
#1

cred ca in add_comment.php trebe mai intai initializate variabilele

Raporteaza acest comentariu ca injurios!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
4180
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4085
Tutoriale scrise de kheops
kheops Rang utilizator kheops - Mediu
4084
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
4055
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
3875
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Photoshop AJAX Fireworks StyleSheet Excel JSON XML RoR SEO Flash Dreamweaver Vista Verilog HTML Sony Vegas Outlook COREL DRAW Gimp Python SWF XHTML Bridge PSD Ruby on Rails CSS Lightroom Powerpoint Java Illustrator PHP MySQL Swift 3D Javascript Word Fotografie Action Script
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software