Curs Php-mysql


Acesta este un script relativ simplu, prin care vizitatorii unui site pot adauga comentarii pe o pagina web (.php).
Poate fi folosit cu mai multe pagini din acelasi site.
Comentariile sunt pastrate in fisiere text, pe server, astfel nu este nevoie de lucru cu baze de date.
- Diferenta fata de celalat script similar (Script comentarii 2), pe care-l puteti gasi aici, este ca acesta afiseaza comentariile in ordine de sus in jos, adica ultimul comentariu adaugat este afisat jos, sub celelalte deja existente.
Scriptul e format din 3 fisiere principale (mai jos veti gasi codul pentru fiecare):


Mod de implementare

Creati un director denumit "coment" si aceste 3 fisiere (in acelasi loc unde aveti fisierul .php in care doriti sa includeti acest script) si adaugati in ele codul pentru fiecare, prezentat mai jos.
- Sau puteti descarca scriptul de la link-ul Download (de sus)
Dupa ce aveti cele trei fisiere pe server, adaugati in zona HEAD a paginii in care includeti scriptul urmatorul cod (pt. grafica CSS): In locul unde vreti sa fie afisate comentariile, adaugati urmatorul cod php: Ultimul pas, pentru ca fisierele text, in care sunt salvate comentariile, sa poata fi create pe server, dati directorului 'coment' permisiuni CHMOD 0777, de citire, scriere, executie (pe server, in clientul de FTP, click dreapta pe director, alegeti "Properties" apoi bifati toate casutele pt. permisiuni de citire, scriere, executie).

- Comentariile adaugate si afisate cu acest script vor apare in pagina similar cu cele din imaginea de mai jos.

Script comentarii


Cod - coment.php

<?php
// Script comentarii de la https://marplo.net/php-mysql
$dir = 'coment/';		// Directorul unde sunt stocate fisierele cu comentariile
$file0 = strip_tags(basename($_SERVER['REQUEST_URI']));		// Preia adresa /numele paginii curente
$file = str_replace(array('/','\\',':','*','|',"'",'"','@','?','='), '', $file0);	// Sterge caracterele speciale din adresa

// Defineste calea si numele fisierelor .txt de stocare a comentariilor
$fisier = $dir. $file. '.txt';			// Defineste cale spre fisierul care va contine comentariile

// Daca sun primite date din formular
if (isset($_POST['nume']) && isset($_POST['comentariu']) && isset($_POST['hideanti_spam']) && isset($_POST['anti_spam'])) {
  // Daca e corect codul anti-spamm
 if($_POST['hideanti_spam']==$_POST['anti_spam']) {
  // Creaza directorul din $dir, daca nu exista
  if (!is_dir("coment")) { mkdir("coment", 0777); }

  // Creaza fisierul pt. pastrarea comentariilor (daca acesta nu exista)
  if (!file_exists($fisier)) {
    touch($fisier);   // Creaza fisierul
    chmod($fisier, 0777);   // Atribue fisierului permisiuni totale
  }

  // Preia datele din form
  $name = strip_tags($_POST['nume']); 
  $data = date(" j-F-Y, g:i a ");
  $coment0 = strip_tags($_POST['comentariu']);    // Elimina tag-urile HTML din comentariu

  // 'wordwrap' scurteaza cuvintele la maxim 35 caractere
  // 'nl2br' adauga <br /> la linie noua
  $coment = '<p class="comm">'. nl2br(wordwrap($coment0, 35, " ", true)). '</p>';


  // Aranjeaza datele preluate din form
  $daten = "\r\n". '<p class="num_e"><span class="clasn"> &#9679; '. $name. "</span>\r\n". '(<i>'. $data. "</i>)</p>\r\n";
  
  // Daca adresa de e-mail e primita si este diferita de '@ptional'
  if (isset($_POST['email']) && $_POST['email']!="@ptional") {
    $datem = '<span class="clasem">&nbsp; &nbsp; &nbsp; &nbsp; e-mail : '. strip_tags($_POST['email']). "</span>\r\n";
  }
  else { $datem = ""; }

  $datec = '<div class="bloc_com">'. $coment. "</div><br /> \r\n"; 
  $ad = $daten. $datem. $datec; 
  if ($name == "") { $ad = ""; }	// Pt. siguranta in caz de refresh gol


  // Sterge datele din fisier, adauga comentariul nou si cel din fisierul de rezerva
  if($fha = fopen($fisier, "ab")) {
    $fa = fwrite($fha, $ad);
    fclose($fha);
  }
  else echo "</h4<Fisierul pt. adaugare comentarii nu a putut fi deschis</h4>";

  // Scriptul JS pt. fereastra Alert care apare dupa adaugarea datelor
  // Si face redirect la aceeasi pagina, pt. a evita re-adaugarea mesajului in caz de Refresh
  echo '<script type="text/javascript">
   window.alert("Mesajul a fost adaugat cu succes");
   window.location = "http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']. '";
  </script>';
  exit;
 }
 else { echo '<h4>Caractere anti-spamm incorecte</h4>'; }
}

// Preia intr-o variabila comenrariile ce vor fi afisate
if(file_exists($fisier)) { $coment = file_get_contents($fisier); }
else { $coment = '<span class="clasn"><i> - Nu exista nici un comentariu. Fii tu primul care adauga!</i></span>'; }

$anti_spam = substr(md5(time()), 3, 5);	// Se definesc caracterele antispam
?>

<!-- Incepe locul comentariilor -->
<div id="cm" align="left">
 <h2>Comentarii :</h2><hr />

<?php echo $coment;		// Afiseaza comentariile (continutul variabilei $coment) ?>
<hr />

<script type="text/javascript" src="check.js"></script> 
<div id="fcom" align="center">
 <h3>Adauga comentariu</h3>

 <form name="formc" onsubmit="return Validate()" method="post" action="<?php echo $file0; ?>">
 <!-- https://marplo.net -->
  <input type="hidden" name="hideanti_spam" value="<?php echo $anti_spam; ?>" />
  <label for="nume">Nume : </label>
  <input type="text" name="nume" id="nume" size="18" maxlength="40" /><br />
  <label for="email">E-mail : </label> 
  <input type="text" name="email" id="email" size="18" maxlength="40" value="@ptional" onclick="if(this.value=='@ptional')this.value='';" onblur="if(this.value.length&lt;2)this.value='@ptional';" /><br />
<label for="comentariu">Scrie comentariu (<i> Maxim 500 caractere </i>) : </label><br />
  <textarea name="comentariu" id="comentariu" cols="35" rows="6"></textarea>
  <br /><a href="https://marplo.net" style="font-size:8px; color:#dadafe;">cursuri jocuri anime</a><br />
  Adaugati urmatorul cod: &nbsp; <b><?php echo $anti_spam; ?></b><br />
  <label for="anti_spam"> Verificare </label> <input type="text" name="anti_spam" id="anti_spam" size="5" maxlength="6" /><br />
  <input type="submit" value="Trimite" id="submit" />
 </form>
</div>
</div>

Cod - check.js

function Validate() {
  var obj = document.forms.formc;
  if (obj.nume.value.length<2 || obj.nume.value.length>30) {
	alert('Numele trebue sa contina intre 2 si 30 caractere!');
	obj.nume.focus();
	return false;	
  }
  else if (obj.email.value.indexOf("@")==-1 || obj.email.value.length<7 || obj.email.value.length>40) {
	alert('Introducei o adresa de e-mail corecta, cu maxim 40 caractere');
	obj.email.focus();
	return false;
  }
  else if (obj.comentariu.value.length<5 || obj.comentariu.value.length>500) {
	alert('Comentariul trebue sa contina intre 5 si 500 caractere!');
	obj.comentariu.focus();
	return false;
  }
  else if(obj.hideanti_spam.value!=obj.anti_spam.value) {
	alert('Caractere anti-spamm incorecte!');
	obj.anti_spam.focus();
	return false;
  }

  return true;
}

Cod - style.css

#cm {
  margin:25px 155px 5px 180px;
  text-align:left;
}

#cm h2 {
  width:115px;
  height:19px;
  margin-top:1px;
  margin-bottom:-3px;
  padding-left:3px;
  font-family:Arial, sans-serif;
  font-size:17px;
  letter-spacing:1px;
  color:#ff2323;
  border-top:1px solid #aaaaaa;
}

#cm .num_e {
  margin-bottom:-2px;
  margin-top:2px;
  font-family:Arial, sans-serif;
  font-size:12px;
  text-align:left;
}

#cm .clasn {
  margin-bottom:-3px;
  padding-right:2px;
  font-family:Arial, sans-serif;
  font-size:14px;
  letter-spacing:1px;
  font-weight:bold;
  color:blue;
}

#cm .clasem {
  margin-bottom:1px;
  font-family:Arial, sans-serif;
  font-size:13px;
  color:green;
}

#cm .bloc_com {
  width:655px;
  background-color:#efeffe;
  margin-top:2px;
  margin-bottom:-15px;
  margin-left:45px;
  font-family:Arial, sans-serif;
  font-size:15px;
  padding:1px 2px;
  text-align:left;
}

#cm  .comm {
  width:650px;
  margin:1px auto;
  text-indent:22px;
  text-align:left;
}

/* Grafica form-ului pt. adaugare comentarii */

#cm h3 {
  margin-top:0px;
  margin-bottom:7px;
  font-family:Arial, sans-serif;
  font-size:17px;
  text-decoration:underline;
  letter-spacing:1px;
  text-align:center;
  color:#010101;
}

#cm input, textarea {
  border:1px solid #101010;
  font-family:Arial, sans-serif;
  font-size:15px;
  letter-spacing:1px;
  color:#111111;
  background:#ffe0ff;
}

#cm input:focus, textarea:focus {
  background:#fffedd;
}

#cm label {
  padding:1px 0px 1px 0px;
  font-family:Arial, sans-serif;
  font-size:15px;
  color:blue;
}

#cm #submit {
  margin-top:2px;
  margin-bottom:2px;
  padding:0px;
  font-family:Arial, sans-serif;
  font-size:14px;
  color:#111111;
}

#cm #submit:hover {
  margin-bottom:0px;
  background:#fffedd;
  border:2px double #333333;
  cursor:pointer;
}

Scriptul este gratuit, fara vreun suport supimentar, dar daca aveti intrebari sau probleme de instalare cu acest script, postati pe Forum-ul la sectiunea "PHP - MySQL".

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tag se foloseste pentru a adauga liste in elemente <ul> si <ol>?
<dt> <dd> <li>
<ul>
 <li>http://coursesweb.net/html/</li>
 <li>http://www.marplo.net/html/</li>
</ul>
Care valoare a proprietatii "display" seteaza elementul ca tip bloc si afiseaza un punct in fata?
block list-item inline-block
.some_class {
  display: list-item;
}
Care instructiune JavaScript transforma un obiect in sir JSON.
JSON.parse() JSON.stringify eval()
var obj = {
 "courses": ["php", "javascript", "ajax"]
};
var jsonstr = JSON.stringify(obj);
alert(jsonstr);    // {"courses":["php","javascript","ajax"]}
Indicati clasa PHP folosita pentru a lucra cu elemente HTML si XML in PHP.
stdClass PDO DOMDocument
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>';
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById("dv1");
echo $elm->nodeValue;    // CoursesWeb.net
Indicati forma de Prezent Continuu a verbului "to live" (a trai /a locui)
lived living liveing
I`m living here.
- Traiesc /Locuiesc aici.
Care este forma de Gerunziu (sau Participiu Prezent) a verbului "vivir" (a trai /a locui)?
viviĆ³ vivido viviendo
Estoy viviendo aquĆ­.
- Traiesc /Locuiesc aici.
Script comentarii 3

Last accessed pages

  1. Numerale, Numere in limba engleza - Numerals (52515)
  2. Zilele saptamanii, Lunile si Anotimpuri - Exercitii incepatori (10477)
  3. Scoala zeilor (5782)
  4. Adjectivul in limba engleza - The adjective (24690)
  5. Prezentul simplu si continuu - Present Tense Simple and Continuous (148236)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (968)
  2. Gramatica limbii engleze - Prezentare Generala (630)
  3. Exercitii engleza - English Tests and exercises - Grammar (559)
  4. Prezentul simplu si continuu - Present Tense Simple and Continuous (457)
  5. Coduri pt culori (367)