In deze zelfstudie maken we een basis 'Shoutbox'-systeem met PHP. Met het oog op de ontwikkeling van beginners tot PHP, kunt u uw voeten nat werken met databases voordat u verder gaat met een aantal van de meer geavanceerde PHP-tutorials hier bij NETTUTS.
Deze tutorial begeleidt je bij het maken van een eenvoudige "shoutbox" met PHP, met behulp van een MySQL-database om de shouts op te slaan - en het er vervolgens leuk uit te laten zien met wat CSS. De tutorial is bedoeld voor ontwerpers die zelfverzekerd zijn met HTML & CSS, maar die willen experimenteren met PHP.
Volg na de tutorial hopelijk een goed begrip van de basisprincipes van het gebruik van PHP om te communiceren met een database om informatie te verzenden, te vragen en te ontvangen. We zullen ook het gebruik van Gravatars in onze Shoutbox opnemen, en die extra extra uitstraling toevoegen!
Voor degenen die dat niet hebben, raad ik je aan onze PHP From Scratch-serie te lezen om precies te begrijpen wat PHP is, en een blik te werpen op enkele van de basissyntaxis en hoe we variabelen gebruiken.
De bronbestanden worden ook becommentarieerd voor degenen die dat liever willen leren.
Voordat u begint, moet u al een database instellen op uw webserver. Zorg dat je de volgende details bij de hand hebt:
In de database moet u een tabel met de naam maken geschreeuw met vijf velden:
Voer de volgende SQL-code uit om dit te maken. U zult dit normaal gesproken uitvoeren vanaf het tabblad SQL in phpMyAdmin.
CREËER TAFEL 'shouts' ('id' INTEGER NIET GEGEVEN NIET NULL AUTO_INCREMENT, 'naam' VARCHAR (45) NOT NULL, 'email' VARCHAR (60) NOT NULL, 'post' TEXT NOT NULL, 'ipaddress' VARCHAR (45) NOT NULL, PRIMARY KEY ('id'));
U moet een bericht 'Uw SQL-query is succesvol uitgevoerd' ontvangen
We hebben drie bestanden nodig die voor dit project zijn gemaakt:
Je hebt ook een map met onze vereiste afbeeldingen nodig. Grijp dit vanuit de bronbestanden.
De db.php bestand zal worden gebruikt om onze databasedetails op te slaan. Open het en voeg de volgende code in:
Start jou index.php bestand met de volgende code, het begint net met ons document en plaatst een paar delen later in stijl.
Shoutbox voor NETTUTS door Dan Harper Shoutbox
Dan Harper: NETTUTS
Een verbinding tot stand brengen
Voordat we iets met een database kunnen doen, moeten we er verbinding mee maken. Voeg het volgende in na de vorige code. Dit wordt hieronder uitgelegd.
Kan op dit moment geen verbinding maken met de databaseserver.'); mysql_select_db ($ database, $ connect) of die ('Kan op dit moment geen verbinding maken met de database.
');De eerste twee regels gebruiken een ingebouwde PHP-functie om de naam van dit bestand te krijgen, en de andere regel om het IP-adres van de bezoeker te krijgen. We zullen de twee variabelen later in de zelfstudie gebruiken.
We nemen dan onze db.php bestand zodat we de databasedetails kunnen ophalen die u hebt ingevuld. U kunt ook alles van db.php hier plakken, maar het is een goede gewoonte om de details te scheiden.
$ verbinden slaat een functie op om onze databasedetails te gebruiken om een verbinding tot stand te brengen met de databaseserver. Als er geen verbinding kan worden gemaakt, wordt er een foutmelding weergegeven en wordt de rest van de pagina gestopt met dobbelsteen ().
Eindelijk maken we verbinding met onze database.
Is er iets ingediend??
Het volgende dat we zullen doen, is controleren of iemand een shout heeft ingediend via het formulier (dat we binnenkort zullen opnemen). We controleren de POST van documenten om te zien of er iets is ingediend via een formulier.
if (isset ($ _ POST ['send'])) if (empty ($ _ POST ['name']) || empty ($ _ POST ['email']) || empty ($ _ POST ['post']) ) echo ('U hebt een verplicht veld niet ingevuld.
'); elseWe beginnen met onze if () die onze POST controleert om te zien of een item met de naam 'verzenden' is ingediend. Als dit het geval is, gebruiken we de lege () -functie om ervoor te zorgen dat de velden 'naam', 'e-mail' en 'post' zijn ingevuld. Als dat niet het geval is, wordt een fout weergegeven.
Anders gaan we verder:
$ name = htmlspecialchars (mysql_real_escape_string ($ _ POST ['name'])); $ email = htmlspecialchars (mysql_real_escape_string ($ _ POST ['email'])); $ post = htmlspecialchars (mysql_real_escape_string ($ _ POST ['post'])); $ sql = "INSERT INTO schreeuwen SET name =" $ name ", email =" $ email ", post =" $ post ", ipaddress =" $ ipaddress ";"; if (@mysql_query ($ sql)) echo ('Bedankt voor het schreeuwen!
'); else echo ('Er is een onverwachte fout opgetreden bij het indienen van je shout.
');Op de eerste drie regels voeren we elk van onze velden (naam, e-mail en post) via de htmlspecialchars () en mysql_real_escape_string () functies en plaats ze in hun eigen variabelen.
htmlspecialchars () is een functie die is ontworpen om te voorkomen dat gebruikers HTML-code indienen. Als we dit niet doen, kan iemand elke HTML in onze database plaatsen die vervolgens wordt uitgevoerd naar andere gebruikers. Dit is vooral slecht als iemand een javascript-code heeft ingevoerd die bezoekers naar een kwaadwillende website zou leiden!
mysql_real_escape_string () is een vergelijkbare functie. Behalve dit houdt dit de gebruiker tegen om enige soort SQL-code naar de server te verzenden. Als we dit niet doen, kan iemand code uitvoeren om onze database te stelen, bewerken of wissen!
Met behulp van onze nieuwe gegevens maken we een SQL-query om de ingediende shout in de database in te voegen. In de if () -tags voeren we de SQL-query uit. Als de query met succes is uitgevoerd en de shout aan de database is toegevoegd, wordt een bericht weergegeven waarin "Bedankt voor geschreeuw!" bericht; anders geven we een foutmelding.
De Shouts ophalen
We zullen nu de 8 nieuwste shouts uit onze database ophalen om ze aan de gebruiker te tonen.
$ query = "SELECT * FROM" shouts 'ORDER BY' id 'DESC LIMIT 8; "; $ result = @mysql_query ("$ query") of die ('Er is een onverwachte fout opgetreden bij het ophalen van gegrepen uit de database.
'); ?>
Op de eerste regel maken we een nieuwe SQL-query om "Alle velden uit de 'shouts'-tabel op te halen, ze te laten dalen door de' ID ', maar geef ons alleen de nieuwste 8".
Op de tweede regel voeren we de query uit en slaan deze op in $ resultaat. Wij nu:
while ($ row = mysql_fetch_array ($ result)) $ ename = stripslashes ($ row ['name']); $ eemail = stripslashes ($ row ['email']); $ epost = stripslashes ($ row ['post']); $ grav_url = "http://www.gravatar.com/avatar.php?gravatar_id=".md5(strtolower($eemail))."&size=70"; echo(''); ?> '$ Ename.'
'$ EPost.'
De eerste regel zegt: "Hoewel er nog steeds rijen (resultaten) binnen $ resultaat zijn, geef ze dan als volgt weer:".
stripslashes () verwijdert alle schuine strepen die mysql_real_escape_string () mogelijk in inzendingen geplaatst.
$ grav_url maakt onze Gravatar van elk e-mailadres van elke gebruiker.
Vervolgens voeren we elke schreeuw op een specifieke manier uit (echo). Door de Gravatar, Name en Shout in een lijst te plaatsen, kunnen we dit later gemakkelijk stijlen.
Het formulier
De laatste stap voor deze pagina is om een formulier onder aan de pagina op te nemen waarin gebruikers berichten kunnen verzenden.
Merk op dat we verwijzen naar de $ self variable om het formulier te vertellen waar de resultaten naartoe moeten worden verzonden; en we sturen ook via de POST-methode. Onder het formulier sluiten we alle HTML-tags af die we hebben geopend.
Probeer het! Je hebt alle PHP-code voltooid en je zou een nieuwe shout moeten kunnen toevoegen en de 8 nieuwste kunnen zien.
Er is echter één probleem. Het ziet er LELIJK uit! Laten we dat uitzoeken met wat CSS :) Omdat dit geen CSS-tutorial is, zal ik niet over de styling gaan, maar alles is vrij eenvoudig.
* marge: 0; opvulling: 0; body background: # 323f66 topcentrum-URL ("images / back.png") geen herhaling; kleur: #ffffff; font-family: Helvetica, Arial, Verdana, sans-serif; h1 font-size: 3.5em; letter-spacing: -1px; achtergrond: url ("images / shoutbox.png") zonder herhaling; breedte: 303 px; marge: 0 auto; text-indent: -9999em; kleur: # 33ccff; h2 font-size: 2em; letter-spacing: -1px; achtergrond: url ("images / shout.png") geen herhaling; breedte: 119 px; text-indent: -9999em; kleur: # 33ccff; beiden opschonen; marge: 15 px 0; h5 a: link, h5 a: visited color: #ffffff; tekstdecoratie: geen; h5 a: hover, h5 a: active, h5 a: focus border-bottom: 1px solid #fff; p font-size: 0.9em; regelhoogte: 1.3em; font-family: Lucida Sans Unicode, Helvetica, Arial, Verdana, sans-serif; p.error background-color: # 603131; rand: 1px vast # 5c2d2d; breedte: 260 px; opvulling: 10px; margin-bottom: 15px; p.success achtergrondkleur: # 313d60; rand: 1px vast # 2d395c; breedte: 260 px; opvulling: 10px; margin-bottom: 15px; #container width: 664px; marge: 20px auto; text-align: center; #boxtop margin: 30px auto 0px; achtergrond: url ("images / top.png") no-repeat; breedte: 663 px; hoogte: 23 px; #boxbot margin: 0px auto 30px; achtergrond: url ("images / bot.png") zonder herhaling; breedte: 664 px; hoogte: 25px; #content margin: 0 auto; breedte: 664 px; text-align: left; achtergrond: url ("images / bg.png") repeat-y; opvulling: 15px 35px; #content ul margin-left: 0; margin-bottom: 15px; #content ul li list-style: none; beiden opschonen; padding-top: 30px; #content ul li: first-child padding-top: 0; .meta width: 85px; text-align: left; zweven: links; minimale hoogte: 110 px; lettertype: vet; .meta img opvulling: 5px; achtergrondkleur: # 313d60; .meta p font-size: 0.8em; .shout width: 500px; zweven: links; margin-left: 15px; minimale hoogte: 110 px; padding-top: 5px; vorm duidelijk: beide; margin-top: 135px! belangrijk; .fname, .femail width: 222px; zweven: links; form p font-weight: bold; margin-bottom: 3px; form textarea width: 365px; overloop verborgen; / * verwijdert verticale schuifbalk in IE * / formulierinvoer, formulier textarea background-colour: # 313d60; rand: 1px vast # 2d395c; kleur: #ffffff; opvulling: 5px; font-family: Lucida Sans Unicode, Helvetica, Arial, Verdana, sans-serif; margin-bottom: 10px;
Dus daar heb je het! Een geweldige, volledig functionele Shoutbox! Je hebt je misschien afgevraagd wat de punt van het maken van een Shoutbox is, en ja, je hebt gelijk, het heeft geen zin. Maar wat dit wel doet, is om u wat basiskennis te geven over het gebruik van PHP om met een database te werken, zodat u hier bij NETTUTS verder kunt gaan naar veel geavanceerdere handleidingen..
.