.php site beveiligen??

Status
Niet open voor verdere reacties.
Aangezien ie nog niet in de Handleiding sectie staat

Apache Webserver met PHP en MySQL

Inleiding

Ik ga hier een poging doen tot het duidelijk maken hoe een Webserver met PHP en MySQL geinstalleerd kan worden. Ik ga er al van uit dat je weet hoe windows ongeveer werkt en wat PHP en SQL onderandere doet.

Note:

Ik heb deze handleiding in Windows 2003 real-time (tijdens dat ik het gedaan heb) geschreven. Ik weet dat het hetzelfde werkt op Windows 2000 en XP. In Windows 95/98/Me heeft men nog nooit van ‘services’ gehoord en dat kan lastig zijn. Draai je een van deze machines dan raad ik het af deze handleiding te nuttigen

Wat gaan we installeren

Wat doe wat?

Apache Webserver

De apache webserver zorgt ervoor dat anderen jou site’s kunnen bekijken. Door jou site’s in de (standaard) htdocs map te zetten kunnen de anderen naar jou IP gaan en die site’s bekijken.

PHP

PHP is een server-side scripting language. Je kunt met die taal een prachtig resultaat bereiken. Waar je nu bijvoorbeeld naar kijkt is in PHP gemaakt. Als je dus een forum of gastenboek dat in PHP gemaakt is wilt draaien moet je PHP geïnstalleerd hebben

MySQL

’s Werelds beste open-source database. PHP en MySQL werkt heel goed samen en het is makkelijk om teksten of regels in een database op te slaan.

Goed, we gaan beginnen

Eerst, als je dat nog niet gedaan hebt, download je de Apache Webserver. Wat te binden is bij [ Wat gaan we installeren ].

TIP: Als je alles in een map installeert is het overzichtelijk en weet je redelijk wat je allemaal op je webserver hebt draaien.

TIP: Apache kun je gewoon in de ‘root’ van de map installeren. Wil je het bv. In D:\Webserver\ hebben dan maakt de installatie zelf de map D:\Webserver\Apache\ aan.

Tijdens de installatie kom je de vraag wat jou Network Domain, Server name en Administrator's Email adres is.

Network Domain: Domein waar de webserver actief op is. bv. thomaz.dyndns.org
Server name: Naam van de server. Het makkelijkste is om dit hetzelfde te geven als hierboven
Administrator's Email: Het email adres van de beheerder van de webserver

Ook word er op de zelfde pagina gevraagt of je Service of manual wilt opstarten. Als je een computer met een ander deelt is het het beste om de bovenste te kiezen (Service) zodat je webserver ook bereikbaar is als er iemand anders is ingelogd. Wil je dit niet kies dan Manual. Denk er wel aan dat je dan als je wilt dat de webserver bereikbaar moet zijn een 'DOS' venster open heb staan.

Kies een leuke map om Apache in te installeren. Bijvoorbeeld in D:\Webserver\ en druk op [ Install ] Als alles goed gegaan is en je hebt geen foutmeldingen ontvangen klik dan hier om je webserver te bezoeken!

Nou leuk. Nu heb je de handleiding van Apache. Je wilt hier natuurlijk je eigen site hebben. Verwijder de inhoud van D:\Webserver\Apache\htdocs\ en plaats je eigen site's daar en refresh het venster met http://localhost/ (het adres van je eigen server die je lokaal kunt bezoeken).

Nu gaan we voordat we verder gaan met de volgende onderdelen nog wat sleutelen aan Apache. Open het configuratie document (Start -> Programma's -> Apache HTTP Server -> Configure Apache Server en open 'Edit the Apache httpd.conf Configuration File') en zoek naar

<IfModule mod_dir.c>
DirectoryIndex index.html
</IfModule>
En verander dat naar
<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.php index.php3
</IfModule>
Als je nu naar een map gaat waar een van de bestanden inzit die opgegeven zijn word automatisch geopent.

Als je nu je sites in een andere map wilt zetten die wat makkelijker te bereiken is dan de standaard map zoek je in het configuratie document naar DocumentRoot (Regel: 301) en verander de map tussen de " ". Je moet alleen op de volgende regels letten: Het mag niet eindigen op een / en het MOET moet / en niet \

Nu herstart je de server weer.

PHP
Nu het leukste, PHP installeren. Heel veel moeilijker dan de Apache Server is het niet maar je moet je aandacht er wel even bijhouden ;).

Download PHP als je dat nog niet gedaan hebt. Pak het uit in bv. de map D:\Webserver\PHP\. Nu ga je naar D:\Webserver\PHP\ en copieer je het bestandje 'php.ini-dist' naar C:\windowsmap\ (WINNT, Windows ofzo) en hernoem je dat naar 'php.ini'. Nu kopieer je het bestand uit D:\Webserver\PHP\extensions\ dat 'php_gd2.dll' heet naar D:\Webserver\PHP\ (een map hoger dus). Dat was moeilijk he :D

En dan nu het pittige gedeelte.

Ga naar Start -> Programma's -> Apache HTTP Server -> Configure Apache Server en open 'Edit the Apache httpd.conf Configuration File'

Als je het met een editor geopent hebt waar regelnummers bijstaan kun je meteen naar regel 433 gaan. Heb je dat niet dan zoek je naar
<IfModule mod_mime.c>
TypesConfig conf/mime.types
</IfModule>
Daaronder zet je

ScriptAlias /php/ "D:/Webserver/PHP/"
AddType application/x-httpd-php .php .php3
Action application/x-httpd-php "/php/php.exe"

Als je PHP in een andere map hebt geinstalleerd dan pas je dat aan in de eerste regel (Bij ScriptAlias /php/ "HIER")
Het moet trouwens moet / ipv. \ omdat Apache oorspronkelijk voor Linux is gemaakt. Voer je het in met \ dan begrijpt Apache niet wat je wilt ;)

Nu herstart je de server door naar Start -> Programma's -> Apache HTTP Server -> Control Apache Server -> Restart te gaan. Je krijgt nu een kleine melding dat de server bezig is met herstarten. Krijg je geen errors maak dan een bestandje phpinfo.php aan met de volgende inhoud:
PHP:
<? phpinfo(); ?>
en sla dat op in D:\Webserver\Apache\htdocs.
Ga dan naar http://localhost/phpinfo.php Als dat werkt en je krijgt een tabel met allemaal informatie voorgeschoteld dan is de installatie van PHP succesvol verlopen.

Ga daarna naar Start -> Uitvoeren -> php.ini en zoek naar

[mail function]
; For Win32 only.
Daaronder zie je SMTP = localhost. Verander dit naar de mailserver van jou ISP of als je een eigen mailserver draait naar het bijpassende adres.

Een paar regels lager zie je
; For Win32 only.
;sendmail_from = me@example.com
. Haal de ; weg bij de laatste regel en verander het email adres in het mail adres van de beheerder.

Nu zoek je naar ;extension=php_gd2.dll en verwijder je de ;.

MySQL
Wat is een host met PHP zonder MySQL? Heel weinig kan ik je vertellen. Er zijn heel veel scripts die gebruik maken van een MySQL database. Nu zal dit waarschijnlijk de makkelijkste installatie zijn.

Download de .zip, pak 'm uit en installeer dat bv. in D:\Webserver\MySQL\.
Er word niks speciaals gevraagd tijdens de installatie dus daar zal menig mens geen moeite mee moeten hebben. Nu is MySQL geinstalleerd. Nu willen we ook weten of MySQL ook daadwerkelijk draait, is het niet? We gaan dus naar D:\Webserver\MySQL\bin\ en starten 'winmysqladmin.exe'. Krijg je een error dat het programma een .dll niet kan vinden probeer eens in de map D:\Webserver\MySQL\lib\debug\ het bestand te vinden en kopieer die naar dezelfde map waar 'winmysqladmin.exe' zich bevind.

Tijdens het opstarten merkt WinMySQLAdmin dat het de eerste keer is en zal vragen om een gebruikersnaam en wachtwoord dat in de toekomst nodig zal zijn voor scripts om te verbinden. Dit is wel een Admin wachtwoord.

Nu zie je rechtsonderin in de buurt van de klok een Stoplicht. Staat het stoplicht op GROEN dan werkt alles als behoren en kun je stoppen met lezen en naar de TIPZ gaan. Staat ie echter op Oranje of Rood, lees dan maar door. Je hebt in de lijst gezien dat er 4 onderdelen staan. We hebben er tot nu toe maar 3 geinstalleerd. Die 4e is ervoor als je MySQL niet wilt starten. Je download dan de Connector en installeert die. Herstart je computer en probeer het programma opnieuw te starten. Als het dan nog niet werkt open je maar een nieuw thread op Helpmij.nl ;)

Slot
Als alles goed is verlopen mag ik je nu feliciteren met een Apache Webserver met PHP en MySQL :D. Jou webserver ondersteund nu PHP, MySQL en de GD Libary 2 extensie voor PHP. Ik hoop dat je er veel plezier van hebt en veel van leert :)

Masterprut / Thomas

TIPZ
- Sommige scripts zijn nog op de 'oude' manier geschreven. Dat betekent dat je in php.ini (Start -> Uitvoeren -> php.ini) moet zoeken naar register_globals Off en dat veranderen naar register_globals On. Nu zullen je scripts wel werken.
- Om je databases te beheren via een script raad ik PHPMyAdmin en/of SQL Admin aan. SQL Admin is geschreven door JPeetje en is heel geschikt voor beginners.
- Elke keer als je iets hebt aangepast in php.ini, httpd.conf of my.ini moet je de server herstarten.
 
Laatst bewerkt:
mijn bedoeling is om zodra iemand zich heef aangemeld, die persoon een registratie code toegezonden krijgt.
ik gebruik op dit moment dit script, maar ik krijg continu een foutmelding.
PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>

<form name="form1" method="post" action="">
  E-mail:
    <input name="email" type="text" id="email" value="Mijn email addres">
  <br>
  Naam:
  <input name="username" type="text" id="username" value="Naam">
  <br>
  Password:
  <input name="password" type="text" id="password" value="password">
  <br>
</form>

<?PHP
$ontvanger = $_POST['email'];
$onderwerp = "Bevestig registratie";
$bericht= "Beste {".$_POST['username']."}, Je hebt je net geregistreerd op mijn sit
inlognaam:  {".$_POST['username']."} 
password: {".$_POST['password'].

mail($ontvanger, $onderwerp, $bericht); //<-- line 29

?>
</body>
</html>

Warning: mail(): Failed to connect to mailserver at "mail.hotmail.com" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\program files\webserver\apache\htdocs\untitled-1.php on line 29
 
Laatst bewerkt:
nog een probleempje heb ik, een niet al te leuke.
mijn sql werkt niet meer, het stoplicht staat op rood!!!:(
sql kan geen enkele info meer zien, misschien (ik weet niet want ik kan het niet kontroleren) is het probleem dat ik een database "test" genaamd weg heb gegooid.
als dit het probleem kan zijn, kan iemand mij dan vertellen hoe er weer een aan te maken. met my SQL lukt het niet...:eek:

JB'tje
 
Laatst bewerkt:
Test heeft naar ons (JPeetje en ik) geen nut. Gewoon een test database. De server draait ook zonder. Maar de database mysql moet je laten staan, daar staan de rechten in.

Om MySQL weer op groen te krijgen zet je het uit (rechtermuisknop -> winnt -> shutdown this tool) en isntalleer je de Connector 3.51

En om dat lapje code wat overzichtelijker / netter te maken:

PHP:
<?

mail($_POST['email'], "Bevestiging registratie", "Beste " . $_POST['username'] . ",\n\nJe hebt je net geregistreerd op mijn site\nInlognaam: " . $_POST['username'] . "\nPassword: " . $_POST['password']);

?>

Wat ik heb gedaan:
- Alle variablen meteen in de mail(); functie gezet
- Ik zag dat je nieuwe regels wilde, dat moet met \n
- De (global) variablen ietjes netter neergezet

Nu is je script wat kleiner en doet toch hetzelfde :)

En nog succes met je MySQL :thumb:
 
Laatst bewerkt:
ik denk dat ik die mysql maar weer ff ga de instaleren en weer op nieuw instaleren. ik denk dat het probleem dan wel verholpen is.
ik heb een GRATIS webhost gevonden, met 128 MB aan ruimte!!
helaas denk ik dat die ook geen PHP ondersteuning heeft. toen dacht ik, ik kan mijn computer dat laten ondersteunen, en ik heb een heleboel ruimte, kan ik niet op de een of andere manier dei PHP daar ook neerzetten zodat ik daar ook PHP ondersteuning heb???
(het zal vast niet kunnen, maar 't valt te proberen)

JB'tje
 
Zie de tutorial die masterprut een paar posts terug postte ;)
 
ik heb my SQL opnieuw geinstalleerd, en hij werkt weer. ik denk dat het kwam omdat ik de database "test" heb verweiderd.

@JPeetje
misschien kun je SQL admin zo aanpassen dat die die database NIET kan verweideren??

ooh, dit is de plaats waar ik die 128MB als ruimte heb gekregen:*klik hier*

JB'tje
 
Laatst bewerkt:
ik wil niet mijn igen comp als server gebruiken, maar een site dus. ik heb op die lycos gekeken, maar ik heb er niet een GRATIS host kunnen vinden.
weet iemand waar ik die kan vinden, gratis host bij lycos??
ik ga nu ff op google zoeken of ik een gratis host met PHP en SQL ondersteuning kan vinden

JB'tje
 
Geplaatst door JB'tje
@JPeetje
misschien kun je SQL admin zo aanpassen dat die die database NIET kan verweideren??
Tuurlijk kan dat :)
Maar dat ga ik niet doen, hoogstens in config.php er een setting voor maken. Ik hou namelijk niet van beperkingen en wanneer ik geen toegang om mijn eigen database ter verwijderen ... Tis mijn database, als ik die wil verwijderen dan zal hij gehoorzamen :evil:

Btw, je kan ook op Helpmij zoeken naar die gratis hosts ... er zijn zat topics over.
 
ja, ik weet het niet zeker, maar toen ik die database "test" weggegooid had, kon ik nix meer met SQL. het stopligt ging op rood staan, en alle tabs daarboven (op 2 na) waren leeg. misschien moet je die "test" altijd habben???:)

@ masterprut
ik wil webspace, gratis, en met php en sql ondersteuning. daarna wil ik daar een spel op maken, als die werkt, en goed bevalt wil ik webspace huuren, en geld verdienen door reclame toe te laten op die site.
das precies wat ik op dit oment wil. (das al heel wat voor mijn leeftijd)

JB'tje
 
ja, ik weet het niet zeker, maar toen ik die database "test" weggegooid had, kon ik nix meer met SQL. het stopligt ging op rood staan, en alle tabs daarboven (op 2 na) waren leeg. misschien moet je die "test" altijd habben???

Je moet de databases mysql en test nooit verwijderen anders werkt het idd niet meer ;)
 
Geplaatst door BrEeZeR
Je moet de databases mysql en test nooit verwijderen anders werkt het idd niet meer ;)
Raar ... mijn 'test' database is 3 maand geleden al verwijderd en 't werkt nog ... :D
Volgens mij mag je die dan ook wel verwijderen ;)
De 'mysql' database daarentegen niet, hier worden alle MySQL users in opgeslagen, inclusief de privileges.
 
Mwa, JPeetje en ik (JP eigenlijk meer :p) heeft beide databases verwijdert bij mij en 't loopt hier nog steeds hoor :)
 
Geplaatst door masterprut
Mwa, JPeetje en ik (JP eigenlijk meer :p) heeft beide databases verwijdert bij mij en 't loopt hier nog steeds hoor :)
Ach, je doet toch niets belangrijks :p
 
:(

Flauw hoor

:p

Nee, ik type gewoon die nutteloze code van JPeetje over en duim dan dat het werkt :p
 
)
De 'mysql' database daarentegen niet, hier worden alle MySQL users in opgeslagen, inclusief de privileges
@ JPeetje
nou, verander je programmatje zodat je die mysql database niet kunt verweideren (deze had ik ook verweiderd :D

eeh, ik heb nu wel een script van hoe een mail te zenden, maar het is eigenlijk de bedoeling dat de mail word gezonden wanneer er op en knop is gedrukt.
ik snap totaal helemaal nix van die knoppen en hoe ze werken, du skan iemand dat mij uitleggen met een voorbeeld (in mijn site ben ik van plan ze nog heeeeel vaak te gebruiken)
PHP:
<?

session_start();
$wachtwoord = "test"; // hier je wactwoord neerzetten.

if(isset($_SESSION['slogin']) == FALSE)
{
  if(isset($_POST['login']) == FALSE)
  {
    echo "<form method=\"POST\">";
    echo "<b>Wachtwoord</b>: <input type=\"text\" name=\"wachtwoord\"> <input type=\"submit\" name=\"login\" value=\"Go !\">";
    echo "</form>";
  }
  else
  {
    if($_POST['wachtwoord'] == $wachtwoord)
    {
      $_SESSION['slogin'] = md5($wachtwoord);
      header("Location: " . $_SERVER['PHP_SELF']);
    }
    else
    {
       echo "Wachtwoord is verkeerd! Klik op terug en probeer opnieuw";
    }
  }
die();
}

?>
dit is om in te loggen. nu moet ik de drukknop hiervan in dit script krijgen, hoe doe ik dat??
PHP:
<form name="form1" method="post" action="">
  E-mail:
    <input name="email" type="text" id="email" value="Mijn email addres">
  <br>
  Naam:
  <input name="username" type="text" id="username" value="Naam">
  <br>
  Password:
  <input name="password" type="text" id="password" value="password">
  <br>
</form>
<?

mail($_POST['email'], "Bevestiging registratie", "Beste " . $_POST['username'] . ",\n\nJe hebt je net geregistreerd op mijn site\nInlognaam: " . $_POST['username'] . "\nPassword: " . $_POST // dit is uiteraard reger 16['password']);

?>
als ik dit uitvoer, krijg ik deze melding:
"Warning: mail(): SMTP server response: 554 Error: no valid recipients in c:\program files\webserver\apache\htdocs\zend mail.php on line 16"

JB'tje
 
Laatst bewerkt:
Waar ken ik die code toch van :rolleyes: :p

Als je het op die manier wilt doen moet je een registratie formulier maken.

Je moet dus een tabel in 'n database hebben die alle informatie onthoud van de leden.

  • userid
  • username
  • password
  • mailadres

Dan een formulier maken dat als er op de knop is gedrukt, dat ie een query uitvoert waar er in de tabel met de leden gegevens, de juiste informatie word gezet :) Maar voordat dat gedaan word, moet ie eerst bekijken of er al een gebruikersnaam bestaat die is ingevoerd. Zo ja => error 'Er bestaat al een gebruikersnaam met de naam username'. Geen resultaten, registeren en mail sturen met inlog gegevens

Bij het inloggen moet je dus eerst een query maken waar ie de username opvraagt, kan ie niks vinden -> error 'Kan geen lid vinden met de gebuikersnaam username'. Als ie wel iets heeft gevonden (als het goed is eentje) dan moet ie het wachtwoord checken. Klopt het wachtwoord, sessie / cookie aanmaken. Klopt het niet -> error 'Het wachtwoord dat bij username hoort klopt niet!'

Succes :thumb:
 
Laatst bewerkt:
als eerst, wat is een "userid"
hoe maak ik een query?? mysql_query(?????). ik heb het op die php.com niet kunnen vinden
en ook, hoe kan ik dan gegevens in die query zetten

JB'tje
 
Geplaatst door JB'tje
als eerst, wat is een "userid"
Dat is een ID waarmee je uniek gemaakt wordt in de database. Voor informatie ophalen kun je dan ook uniek benaderd worden.
hoe maak ik een query?? mysql_query(?????). ik heb het op die php.com niet kunnen vinden
en ook, hoe kan ik dan gegevens in die query zetten
Verbinding maken met een MySQL server:
mysql_connect()

Verbinding maken met een database:
mysql_select_db()

Een query uitvoeren:
mysql_query()

Query's opbouwen:
SELECT
INSERT
UPDATE
DELETE

Succes :thumb:
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan