Vrei să adaugi o funcționalitate de donație pe site-ul tău? Acest ghid te va ajuta să implementezi un script PHP simplu și eficient, care să permită utilizatorilor să doneze și să afișeze suma totală strânsă. Vom parcurge fiecare pas, de la crearea bazei de date până la afișarea informațiilor pe site.
Ce vom construi?
Vom crea un script care va permite utilizatorilor să introducă o sumă de bani, să o salveze într-o bază de date și să afișeze suma totală donată până în acel moment. Această soluție simplă este perfectă pentru proiecte mici și medii, oferind flexibilitate și control asupra procesului de donație.
Cerințe preliminare
Înainte de a începe, asigură-te că ai următoarele:
- Un server web cu PHP instalat (versiunea 7.0 sau mai recentă este recomandată).
- Un server de baze de date MySQL (sau MariaDB).
- Un editor de text pentru a scrie codul PHP.
- Acces la un client MySQL (ex: phpMyAdmin) pentru a crea baza de date.
Pasul 1: Crearea bazei de date
În primul rând, trebuie să creăm o bază de date pentru a stoca informațiile despre donații. Folosește clientul tău MySQL preferat (cum ar fi phpMyAdmin) și urmează acești pași:
- Creează o nouă bază de date. Poți numi baza de date, de exemplu,
donatii
. - În baza de date
donatii
, creează un tabel numitdonatii
cu următoarea structură:
CREATE TABLE donatii (
id INT AUTO_INCREMENT PRIMARY KEY,
suma DECIMAL(10, 2) NOT NULL,
data_donatie DATETIME DEFAULT CURRENT_TIMESTAMP
);
Această tabelă va avea trei coloane:
id
: Un identificator unic pentru fiecare donație (cheie primară, auto-increment).suma
: Suma donată (de tipDECIMAL
pentru a stoca valori zecimale cu precizie).data_donatie
: Data și ora donației (setată automat la momentul inserării).
Pasul 2: Crearea fișierului de conectare la baza de date (db_connect.php
)
Acum, vom crea un fișier PHP care se va ocupa de conectarea la baza de date. Creează un fișier numit db_connect.php
cu următorul conținut:
<?php
$servername = "localhost"; // Sau adresa serverului tău MySQL
$username = "utilizator_mysql"; // Înlocuiește cu numele tău de utilizator MySQL
$password = "parola_mysql"; // Înlocuiește cu parola ta MySQL
$dbname = "donatii"; // Numele bazei de date pe care am creat-o
// Crează conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verifică conexiunea
if ($conn->connect_error) {
die("Conexiunea a eșuat: " . $conn->connect_error);
}
//Setează charset-ul pentru a evita probleme cu caracterele speciale
$conn->set_charset("utf8");
?>
Important: Înlocuiește "utilizator_mysql"
, "parola_mysql"
și "donatii"
cu valorile tale reale.
Pasul 3: Crearea formularului de donație (index.php
)
Acum vom crea un formular simplu în HTML pentru a permite utilizatorilor să introducă suma pe care doresc să o doneze. Creează un fișier numit index.php
cu următorul conținut:
<!DOCTYPE html>
<html lang="ro">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Donează</title>
</head>
<body>
<h1>Donează pentru o cauză bună!</h1>
<form action="doneaza.php" method="post">
<label for="suma">Suma pe care dorești să o donezi (RON):</label>
<input type="number" name="suma" id="suma" min="1" step="0.01" required><br><br>
<button type="submit">Donează!</button>
</form>
<h2>Suma totală donată: <span id="suma_totala">Se încarcă...</span></h2>
<script>
// Funcție pentru a încărca suma totală donată folosind AJAX
function incarcaSumaTotala() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("suma_totala").innerHTML = this.responseText;
}
};
xhttp.open("GET", "get_suma_totala.php", true);
xhttp.send();
}
// Incarcă suma totală la încărcarea paginii
window.onload = incarcaSumaTotala;
// Poți seta un interval pentru a reîncărca suma periodic (opțional)
// setInterval(incarcaSumaTotala, 5000); // Reîmprospătează la fiecare 5 secunde
</script>
</body>
</html>
Acest cod creează un formular simplu cu un câmp pentru introducerea sumei și un buton de trimitere. De asemenea, include un element <h2>
unde vom afișa suma totală donată, încărcată asincron prin AJAX.
Pasul 4: Procesarea donației (doneaza.php
)
Acum vom crea fișierul PHP care va procesa donația, o va salva în baza de date și va redirecționa utilizatorul. Creează un fișier numit doneaza.php
cu următorul conținut:
<?php
include 'db_connect.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$suma = $_POST["suma"];
// Validare simplă a sumei (poți adăuga validări mai complexe)
if (is_numeric($suma) && $suma > 0) {
$suma = floatval($suma); // Asigură-te că suma este un număr real
$sql = "INSERT INTO donatii (suma) VALUES ($suma)";
if ($conn->query($sql) === TRUE) {
echo "<p>Donația ta de " . $suma . " RON a fost înregistrată cu succes!</p>";
echo "<a href='index.php'>Înapoi la pagina principală</a>";
} else {
echo "Eroare: " . $sql . "<br>" . $conn->error;
}
} else {
echo "<p>Te rugăm să introduci o sumă validă (mai mare decât 0).</p>";
echo "<a href='index.php'>Înapoi la pagina principală</a>";
}
$conn->close();
} else {
// Dacă cineva accesează direct acest fișier fără a trimite formularul
header("Location: index.php"); // Redirecționează-l către pagina principală
exit();
}
?>
Acest cod include fișierul db_connect.php
pentru a stabili conexiunea la baza de date, preia suma trimisă prin formular, validează suma și o inserează în tabelul donatii
. Apoi, afișează un mesaj de succes sau de eroare și un link către pagina principală.
Pasul 5: Obținerea sumei totale donate (get_suma_totala.php
)
În cele din urmă, vom crea fișierul PHP care va calcula și returna suma totală donată. Creează un fișier numit get_suma_totala.php
cu următorul conținut:
<?php
include 'db_connect.php';
$sql = "SELECT SUM(suma) AS suma_totala FROM donatii";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
echo number_format($row["suma_totala"], 2, ',', '.') . " RON"; // Formatează suma cu 2 zecimale și separator de mii
} else {
echo "0.00 RON";
}
$conn->close();
?>
Acest cod interoghează baza de date pentru a calcula suma totală a donațiilor și o returnează formatată (cu două zecimale și separator de mii). Acesta este fișierul pe care scriptul AJAX din index.php
îl apelează pentru a afișa suma totală pe pagină.
Testarea scriptului
Acum poți accesa fișierul index.php
în browserul tău. Ar trebui să vezi formularul de donație și suma totală donată (inițial 0.00 RON). Introdu o sumă și apasă butonul „Donează!”. Ar trebui să fii redirecționat către pagina doneaza.php
unde vei vedea un mesaj de confirmare. Reîmprospătează pagina index.php
și ar trebui să vezi suma totală actualizată.
Opinie: Deși acest script este funcțional și ușor de înțeles, nu include funcționalități avansate precum procesarea plăților online prin gateway-uri de plată (ex: PayPal, Stripe) sau securitate suplimentară împotriva atacurilor de tip SQL injection. Pentru proiecte mai complexe, recomand folosirea unor biblioteci sau framework-uri PHP specializate în gestionarea plăților și a securității. Conform datelor, site-urile care oferă multiple opțiuni de plată au o rată de conversie mai mare.
Considerații de securitate
Important: Scriptul prezentat aici este doar un exemplu simplu și nu este sigur pentru utilizare într-un mediu de producție. Pentru a proteja site-ul tău împotriva atacurilor, ia în considerare următoarele măsuri:
- Validează și curăță toate datele de intrare: Folosește funcții precum
htmlspecialchars()
șimysqli_real_escape_string()
pentru a preveni atacurile de tip XSS și SQL injection. - Utilizează declarații pregătite (prepared statements): Aceasta este cea mai bună metodă de a preveni SQL injection.
- Nu stoca parole în clar: Folosește funcții de hashing precum
password_hash()
pentru a stoca parolele în siguranță. - Folosește HTTPS: Asigură-te că site-ul tău utilizează un certificat SSL pentru a cripta comunicațiile dintre browser și server.
Îmbunătățiri posibile
Acest script poate fi îmbunătățit cu următoarele funcționalități:
- Integrarea cu un gateway de plată online (ex: PayPal, Stripe) pentru a permite plata cu cardul.
- Adăugarea de câmpuri suplimentare în formularul de donație (ex: nume, adresă de email, mesaj).
- Implementarea unui sistem de autentificare pentru a permite utilizatorilor să-și vadă istoricul donațiilor.
- Crearea unei zone de administrare pentru a gestiona donațiile și a genera rapoarte.
Sper că acest tutorial te-a ajutat să înțelegi cum poți implementa un script de donație PHP. Cu puțină muncă și atenție la detalii, poți crea un sistem de donații eficient și sigur pentru site-ul tău.