PHP Tutorials

warning: Creating default object from empty value in /home/tutorials/domains/n00btutorials.nl/public_html/modules/taxonomy/taxonomy.pages.inc on line 33.

PHP errors laten e-mailen

Onlangs kwam ik het probleem tegen dat een script een foutmelding veroorzaakte welke ik niet kon achterhalen. Deze werd door een extern proces aangeroepen, maar dat leek om een of andere reden niet te werken. Wanneer ik het script handmatig aanriep werkt dit wel naar behoren. Om te kijken of er fouten werden veroorzaakt besloot ik om fouten naar mijn e-mail adres te laten e-mailen.

E-mail versturen via SMTP

Bij een aantal script die ik in het verleden gemaakt heb, worden via een cronjob aangeroepen. Probleem hierbij is dat wanneer een script een e-mail verstuurd er zoiets staat als info@domain.nl namens server-naam. Omdat ik gebruik maak van een shared hosting staat dat niet erg netjes wanneer deze e-mails naar derden verstuurd worden. De oplossing daarvoor is door de e-mails te versturen via een SMTP server. Toen ik opzoek ging hiernaar bleek het vrij lastig om hier een script voor te vinden. Daarom deel ik deze met de rest van de wereld.

Verbinding met meerdere databases tegelijk

Soms kan het nodig zijn om met meerdere database tegelijk verbinding te maken. Bijvoorbeeld wanneer een meerdere systemen aan elkaar gekoppeld dienen te worden. In deze tutorial zal ik laten zien dat het niet zo moeilijk is om met meerdere databases tegelijk verbinding te maken.

Link identifier

Om een onderscheid te maken tussen de database's moet er gebruik gemaakt worden van een zogenaamde Link identifier. Dit is een variabele waarin de database connectie wordt opgeslagen. Wanneer er een query uitgevoerd dient te worden wordt deze variabele meegeven, waardoor MySQL weet op welke database deze query uitgevoerd dient te worden.

  1. $database1 = mysql_connect('locasthost', 'gebruiker', 'wachtwoord');
  2. mysql_select_db('database_naam', $database1);

wanneer er verbinding gemaakt dient te worden met meerdere database tegelijk wordt de code op deze manier uitgebreid:

Spammers van je website weren (PHP)

Spam bots zijn vervelende dingen waar soms lastig vanaf te komen is. Er zijn al een heleboel verschillende soorten manieren bedacht en gemaakt om spam tegen te gaan: Teksten over typen, rekensommetjes doen, katten herkennen, geluiden herkennen, en zo kan ik nog wel even doorgaan. Omdat spammers dit vaak op grote schaal doen, zijn er al databases aangelegd met de IP-adressen van deze personen. Het is daarom stukken makkelijker om hier gebruik van te maken. Stop Forum Spam.com heeft een dergelijke database beschikbaar via een API. Hier zal ik dan ook gebruik van gaan maken.

IP adres controleren

De eerste stap is het controleren van het IP-adres van de bezoeker. Deze kan eenvoudig via de API opgevraagd worden:

Een menu opslaan in de database

Soms kan het nodig zijn dat je een menu moet maken welke opgeslagen dient te worden in de database. Vaak wordt er dan voor elk niveau een aparte database query gedaan wordt. Wanneer de website groter wordt kan dit uiteindelijk te zwaar worden voor de database. Dit kan ook in één query gedaan worden, wat een stuk minder vergt van de database. Dit wordt bereikt door het gebruik van een array, in combinatie met een functie die voor elk niveau herhaald wordt. Uiteindelijk is het doel om een soort gelijk menu te maken:

  • jQuery Tutorials
    • jQuery Tutorial 1
    • jQuery Tutorial 2
    • jQuery Tutorial 3
  • PHP Tutorials
    • PHP Tutorial 1
    • PHP Tutorial 2
    • PHP Tutorial 3
    • PHP Tutorial 4

PHP en FTP

Soms kan het nodig zijn dat je door middel van PHP een FTP verbinding maakt. Echter om dit te kunnen doen moet je eerst een en ander uitzoeken. Dat heb ik nu alvast gedaan en hier beschreven.

Verbinding maken

Voordat je commando's op de server kunt uitvoeren is het nodig om verbinding te maken met de server. Dat kan vrij eenvoudig gedaan worden op deze manier:

  1. $server = 'ftp.server.com';
  2. $gebruikersnaam = 'username';
  3. $wachtwoord = 'password';
  4. // Zet de verbinding op. Let op, dit commando moet worden opgeslagen worden in een variabele. Later gaat deze nog nodig zijn.
  5. $conn_id = ftp_connect($server);
  6.  
  7. // Dit is het daadwerkelijke inloggen
  8. $login_result = ftp_login($conn_id, $gebruikersnaam, $wachtwoord);

Wanneer er passive mode gebruikt moet worden om een goede verbinding opzetten, moet de functie ftp_pasv worden aangeroepen:

Grafieken maken met PHP en MySQL

Soms kan het handig zijn om grafieken te maken die worden gegenereerd vanuit de database. In deze PHP tutorial ga ik uitleggen hoe dat bereikt kan worden, met behulp van verschillende hulpmiddelen

PHPGraphLib

In het eerste voorbeeld ga ik gebruik maken van PHPGraphLib. Dit is een gratis bibliotheek voor PHP. Om deze bibliotheek te gebruiken, dien je deze eerst te downloaden en vervolgens weer te uploaden naar je webserver. Vervolgens dien je deze weer in te voegen om gebruik te kunnen maken van de functies. Dat doe je zo:

  1. // Uiteraard dien je grafieken aan te passen wanneer het bestand op jou computer niet zo heet.
  2. include('/grafieken/phpgraphlib.php');

Omdat de bibliotheek een class, dient deze zo aangeroepen te worden:

converteer een RFC3339 timestamp naar een PHP timestamp

Een RFC3339 timestamp wordt veel gebruikt in XML feeds. Zo wordt deze onder andere gebruikt bij RSS feeds. Ook gebruikt Google deze ook wanneer er gebruik wordt gemaakt van hun API's, bijvoorbeeld voor de Google Calendar service. Een RFC33339 timestamp is als volgt opgebouwd:

2010-12-31T14:14:38:00.000+02:00

Wanneer dat vertaalt wordt naar maanden, dagen, jaren en uren ziet het er als volgt uit:

Een IP-Blocker maken in PHP

Heb je last van vervelende bezoekers op je website? Dan kan het handig zijn om een IP-blocker erop te plaatsen. Hiermee kun je eenvoudig IP-adressen blokkeren zodat deze niet meer op jou website komen. Een IP-blocker kun je op verschillende manieren maken. In dit voorbeeld ga ik gebruik maken van array's in PHP, en van een variant met MySQL.

Cronjob scripting

Het maken van een cronjob kan soms een lastige opgave zijn. Vaak is het het moeilijkste om te vinden waar het fout gaat.

Het instellen van een cronjob

Omdat er veel verschillende systemen zijn waar het op verschillende manieren ingesteld dient te worden verwijs ik je hiervoor naar Cronjob.nl. Hier staat een uitgebreide uitleg over verschillende soorten systemen.

De cronjob aanroepen

Het commando dat aangeroepen moet worden ziet er ongeveer zo uit:

  1. /pad/naar/php /home/gebruiker/pad/naar/php/script.php

Dit kan per systeem verschillen. In Directadmin ziet dit er zo uit:

Inhoud syndiceren