#2 Simpel Forum compleet in te bouwen V.2
In deze toturial leer ik je met HÉÉL veel commentaar op een goede manier een simpel forum te maken in je eigen geschreven php code.. [By MarViiN's]
Gesponsorde koppelingen
Inhoudsopgave
- Inleiding
- Database klaarmaken & scriptje voor verbinding sch
- Registratie script maken.
- Inlogpagina maken
- Maak topic
- Voeg topic toe
- Forum overzicht
- Index maken
- Bekijk topic
- Reactie Toevoegen
- Gebruikers pagina en verwijder pagina
- Tot slot
- o nog een pagina over =P
66 reacties op '#2 Simpel Forum compleet in te bouwen V.2'
Gesponsorde koppelingen
Heb nog niet hele Tut doorgelezen maar viel me wel gelijk op dat je niks tegen SQL injection doet.
Maak gebruik van addslashes bij SQL Query's
Vooral wanneer je $_POST's of $_GET's in Query's gebruikt is dit erg belangrijk. ( dus bij alle Query's INSERT, UPDATE, DELETE, SELECT)
Maak gebruik van addslashes bij SQL Query's
Vooral wanneer je $_POST's of $_GET's in Query's gebruikt is dit erg belangrijk. ( dus bij alle Query's INSERT, UPDATE, DELETE, SELECT)
@ Marvin
Kijk eens onderaan: http://www.phphulp.nl/php/tutorials/2/492/1181/
Zie diverse Querys met $_GET erin maar nergens iets met mysql_real_escape_string of addslashes?
Zo staan er her en der nog een paar voorbeelden.
Kijk eens onderaan: http://www.phphulp.nl/php/tutorials/2/492/1181/
Zie diverse Querys met $_GET erin maar nergens iets met mysql_real_escape_string of addslashes?
Zo staan er her en der nog een paar voorbeelden.
Edit:
Tip: Maak gebruik van de functie trim om te kijken of de velden zijn ingevoerd. Dat je niet 1 spatie kan invoeren en toch langs de checks komt.
Tip: Maak gebruik van de functie trim om te kijken of de velden zijn ingevoerd. Dat je niet 1 spatie kan invoeren en toch langs de checks komt.
@thijs
daar heb je gelijk in, de verwijder pagina is niet helemaal juist inderdaad..
zal het aanpassen..
daar heb je gelijk in, de verwijder pagina is niet helemaal juist inderdaad..
zal het aanpassen..
edit:
trouwens..
voor elke query check ik de get waardes toch met: if(is_numeric($_GET['verwijdertopic'])) is trim beter dan is_numeric of moet ik die daar nog eens overheen halen? als: is_numeric(trim($_GET['verwijdertopic']))
voor elke query check ik de get waardes toch met: if(is_numeric($_GET['verwijdertopic'])) is trim beter dan is_numeric of moet ik die daar nog eens overheen halen? als: is_numeric(trim($_GET['verwijdertopic']))
edit2:
die trim zal ik zoiezo even inbouwen bij de topic toevoegen enzo want nu kun je inderdaad langs de checks komen thnxx!
De functie trim doet heel andere dingen dan is_nummeric ;)
Gewoon altijd trim() gebruiken bij $_POST
Gewoon altijd trim() gebruiken bij $_POST
Edit:
Ook belangrijk om even te kijken bijvoorbeeld of het topic wel eens bestaat
Voorbeeldje: http://www.phphulp.marviins.nl/forum_tut2/index.php?bekijktopic=1263
of dit:
http://www.phphulp.marviins.nl/forum_tut2/index.php?bekijktopic=
http://www.phphulp.marviins.nl/forum_tut2/index.php?bekijktopic=asdf
Dat ID bestaat niet maar toch geef je iets weer..
Na Query controleren dmv mysql_num_rows of die niet 0 is, en dan topic weer geven. Als die wel 0 is een error of bericht weergeven dat het topic niet bestaat.
Ook belangrijk om even te kijken bijvoorbeeld of het topic wel eens bestaat
Voorbeeldje: http://www.phphulp.marviins.nl/forum_tut2/index.php?bekijktopic=1263
of dit:
http://www.phphulp.marviins.nl/forum_tut2/index.php?bekijktopic=
http://www.phphulp.marviins.nl/forum_tut2/index.php?bekijktopic=asdf
Dat ID bestaat niet maar toch geef je iets weer..
Na Query controleren dmv mysql_num_rows of die niet 0 is, en dan topic weer geven. Als die wel 0 is een error of bericht weergeven dat het topic niet bestaat.
Even een vraagje; Ik was je tut aan't lezen.
Bij de registreer pagina kwam ik bij dit:
In die code maak je je functies, maar je roep ze toch nergens aan...
neem nu:
Hier maak je je functie, maar er staat nergens
Ben ik mis, of ga je hier alleen maar je functies maken?
Mvg,
Jens
Bij de registreer pagina kwam ik bij dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
error_reporting(E_ALL);
include('verbind.php');
if(isset($_POST['registreer'])){
function email_validator($email){
if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
{$geldig = 'ja'; }
else{$geldig = 'nee';}
return $geldig;
}
function email_check($email){
$email_query = "SELECT gebruiker_email FROM gebruiker WHERE gebruiker_email='".$email."';";
$email_sql = mysql_query($email_query)or die(mysql_error());
if(mysql_num_rows($email_sql) == 0)
{$bezet = 'nee';}
else{$bezet = 'ja' ;}
return $bezet;
}
function gebruikersnaam_check($gebruikersnaam){
$gebruikersnaam_query = "SELECT gebruiker_naam FROM gebruiker WHERE gebruiker_naam='".$gebruikersnaam."';";
$gebruikersnaam_sql = mysql_query($gebruikersnaam_query)or die(mysql_error());
if(mysql_num_rows($gebruikersnaam_sql) == 0)
{$bezet = 'nee' ;}
else{$bezet = 'ja';}
return $bezet;
}
if(trim($_POST['gebruikersnaam']) == ""){
echo 'U heeft geen gebruikersnaam ingevuld';
}elseif(gebruikersnaam_check($_POST['gebruikersnaam']) == 'ja'){
echo 'Deze gebruikersnaam is al in gebruik, kies a.u.b een ander.';
}elseif($_POST['wachtwoord1'] != $_POST['wachtwoord2']){
echo 'De opgegeven wachtwoorden komen niet overeen';
}elseif($_POST['wachtwoord1'] == ""){
echo 'Er zijn geen wachtwoord<b>en</b> opgegeven';
}elseif(email_validator($_POST['emailadres']) == 'nee'){
echo 'Het ingevulde emailadres is niet geldig';
}elseif(email_check($_POST['emailadres']) == 'ja'){
echo 'Er is al iemand geregistreerd met dit emailadres.';
}else{
$query = "INSERT INTO gebruiker
(gebruiker_naam, gebruiker_wachtwoord, gebruiker_email)
VALUES
('".mysql_real_escape_string($_POST['gebruikersnaam'])."',
'".md5($_POST['wachtwoord1'])."',
'".$_POST['emailadres']."');";
$sql = mysql_query($query)or die(mysql_error());
echo 'U bent succesvol aangemeld. Hieronder kunt u inloggen:';
include('inloggen.php');
}
}else{
?>
<form action="registreren.php" method="POST">
<table>
<tr><td>Gebruikersnaam:</td><td><input type="text" name="gebruikersnaam" value=""></td></tr>
<tr><td>Wachtwoord:</td><td><input type="password" name="wachtwoord1" value=""></td></tr>
<tr><td>Wachtwoord nogmaals:</td><td><input type="password" name="wachtwoord2" value=""></td></tr>
<tr><td>Emailadres:</td><td><input type="text" name="emailadres" value=""></td></tr>
<tr><td></td><td><input type="submit" name="registreer" value="Aanmelden">
</table>
</form>
<?php
}
?>
error_reporting(E_ALL);
include('verbind.php');
if(isset($_POST['registreer'])){
function email_validator($email){
if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
{$geldig = 'ja'; }
else{$geldig = 'nee';}
return $geldig;
}
function email_check($email){
$email_query = "SELECT gebruiker_email FROM gebruiker WHERE gebruiker_email='".$email."';";
$email_sql = mysql_query($email_query)or die(mysql_error());
if(mysql_num_rows($email_sql) == 0)
{$bezet = 'nee';}
else{$bezet = 'ja' ;}
return $bezet;
}
function gebruikersnaam_check($gebruikersnaam){
$gebruikersnaam_query = "SELECT gebruiker_naam FROM gebruiker WHERE gebruiker_naam='".$gebruikersnaam."';";
$gebruikersnaam_sql = mysql_query($gebruikersnaam_query)or die(mysql_error());
if(mysql_num_rows($gebruikersnaam_sql) == 0)
{$bezet = 'nee' ;}
else{$bezet = 'ja';}
return $bezet;
}
if(trim($_POST['gebruikersnaam']) == ""){
echo 'U heeft geen gebruikersnaam ingevuld';
}elseif(gebruikersnaam_check($_POST['gebruikersnaam']) == 'ja'){
echo 'Deze gebruikersnaam is al in gebruik, kies a.u.b een ander.';
}elseif($_POST['wachtwoord1'] != $_POST['wachtwoord2']){
echo 'De opgegeven wachtwoorden komen niet overeen';
}elseif($_POST['wachtwoord1'] == ""){
echo 'Er zijn geen wachtwoord<b>en</b> opgegeven';
}elseif(email_validator($_POST['emailadres']) == 'nee'){
echo 'Het ingevulde emailadres is niet geldig';
}elseif(email_check($_POST['emailadres']) == 'ja'){
echo 'Er is al iemand geregistreerd met dit emailadres.';
}else{
$query = "INSERT INTO gebruiker
(gebruiker_naam, gebruiker_wachtwoord, gebruiker_email)
VALUES
('".mysql_real_escape_string($_POST['gebruikersnaam'])."',
'".md5($_POST['wachtwoord1'])."',
'".$_POST['emailadres']."');";
$sql = mysql_query($query)or die(mysql_error());
echo 'U bent succesvol aangemeld. Hieronder kunt u inloggen:';
include('inloggen.php');
}
}else{
?>
<form action="registreren.php" method="POST">
<table>
<tr><td>Gebruikersnaam:</td><td><input type="text" name="gebruikersnaam" value=""></td></tr>
<tr><td>Wachtwoord:</td><td><input type="password" name="wachtwoord1" value=""></td></tr>
<tr><td>Wachtwoord nogmaals:</td><td><input type="password" name="wachtwoord2" value=""></td></tr>
<tr><td>Emailadres:</td><td><input type="text" name="emailadres" value=""></td></tr>
<tr><td></td><td><input type="submit" name="registreer" value="Aanmelden">
</table>
</form>
<?php
}
?>
In die code maak je je functies, maar je roep ze toch nergens aan...
neem nu:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
function email_check($email){
$email_query = "SELECT gebruiker_email FROM gebruiker WHERE gebruiker_email='".$email."';";
$email_sql = mysql_query($email_query)or die(mysql_error());
if(mysql_num_rows($email_sql) == 0)
{$bezet = 'nee';}
else{$bezet = 'ja' ;}
return $bezet;
}
?>
function email_check($email){
$email_query = "SELECT gebruiker_email FROM gebruiker WHERE gebruiker_email='".$email."';";
$email_sql = mysql_query($email_query)or die(mysql_error());
if(mysql_num_rows($email_sql) == 0)
{$bezet = 'nee';}
else{$bezet = 'ja' ;}
return $bezet;
}
?>
Hier maak je je functie, maar er staat nergens
Ben ik mis, of ga je hier alleen maar je functies maken?
Mvg,
Jens
ik krijg de hele tijd een error:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/www/infusoria.freehostia.com/verbind.php:6) in /home/www/infusoria.freehostia.com/inloggen.php on line 15
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/www/infusoria.freehostia.com/verbind.php:6) in /home/www/infusoria.freehostia.com/inloggen.php on line 15
Warning: Cannot modify header information - headers already sent by (output started at /home/www/infusoria.freehostia.com/verbind.php:6) in /home/www/infusoria.freehostia.com/inloggen.php on line 19
ik heb het voorbeeld volledig overgenomen en steeds heb ik deze error....
Wat is er nu verkeerd?
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/www/infusoria.freehostia.com/verbind.php:6) in /home/www/infusoria.freehostia.com/inloggen.php on line 15
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/www/infusoria.freehostia.com/verbind.php:6) in /home/www/infusoria.freehostia.com/inloggen.php on line 15
Warning: Cannot modify header information - headers already sent by (output started at /home/www/infusoria.freehostia.com/verbind.php:6) in /home/www/infusoria.freehostia.com/inloggen.php on line 19
ik heb het voorbeeld volledig overgenomen en steeds heb ik deze error....
Wat is er nu verkeerd?
// dit krijg ik bij toevoegen reactie:
Parse error: parse error, unexpected T_VARIABLE in ...../toevoegen_reactie.php on line 27
// en dit op het begin na de login:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at ........../verbind.php:12) in ........../inloggen.php on line 17
kan iemand mij hiermee helpen??
Parse error: parse error, unexpected T_VARIABLE in ...../toevoegen_reactie.php on line 27
// en dit op het begin na de login:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at ........../verbind.php:12) in ........../inloggen.php on line 17
kan iemand mij hiermee helpen??
$reactie_bericht = trim(mysql_real_escape_string(htmlentities(wordwrap($_POST['reactie_bericht'],100, "\n", true))));
Kan dat ook of moet je het zo doen?
$reactie_bericht = trim($_POST['reactie_bericht']);
$reactie_bericht = wordwrap($reactie_bericht, 100, "\n", true);
$reactie_bericht = mysql_real_escape_string($reactie_bericht);
$reactie_bericht = htmlentities($reactie_bericht);
want dat daar boven lijkt mij makkelijker of is dat niet mogenlijk?
Btw vette tutorial ik ga binnekort eens kijken of iek er zelf eentje kan maken ^^
Kan dat ook of moet je het zo doen?
$reactie_bericht = trim($_POST['reactie_bericht']);
$reactie_bericht = wordwrap($reactie_bericht, 100, "\n", true);
$reactie_bericht = mysql_real_escape_string($reactie_bericht);
$reactie_bericht = htmlentities($reactie_bericht);
want dat daar boven lijkt mij makkelijker of is dat niet mogenlijk?
Btw vette tutorial ik ga binnekort eens kijken of iek er zelf eentje kan maken ^^
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\verbind.php:6) in C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\inloggen.php on line 15
Warning: Cannot modify header information - headers already sent by (output started at C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\verbind.php:6) in C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\inloggen.php on line 19
Ik krijg deze error aangezien dat ik alles exact heb overgenomen denk ik dat het aan de instellingen licht van me server weet jij wat ik moet veranderen om het werkende te krijgen?
Warning: Cannot modify header information - headers already sent by (output started at C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\verbind.php:6) in C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\inloggen.php on line 19
Ik krijg deze error aangezien dat ik alles exact heb overgenomen denk ik dat het aan de instellingen licht van me server weet jij wat ik moet veranderen om het werkende te krijgen?
Ik snap echt niet wat ik fout doe als ik daar in dat html bestandje kijk zie ik dat er geen html codes of echo gebruikt mag worden voordat je session_start() of header() mag gebruiken maar dat kan ik helemaal nergens vinden. deze code heb ik :
verbinden.php
inloggen.php
kan jij mij zeggen wat ik verkeerd heb aangeroepen?
verbinden.php
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
mysql_connect("babla", "bloebloe", "")or die('HALP geen connectie met server');
mysql_select_db("forum")or die('HALP geen connectie met database');
?>
mysql_connect("babla", "bloebloe", "")or die('HALP geen connectie met server');
mysql_select_db("forum")or die('HALP geen connectie met database');
?>
inloggen.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
error_reporting(E_ALL);
include('verbind.php');
// bovenstaan is om alle foutmeldingen op het beeldscherm te zetten.
// en we moeten natuurlijk de verbind.php include omdat we verbinding willen
// met de database
if(isset($_POST['inloggen']))
{
$gebruiker_query = "SELECT * FROM gebruiker WHERE gebruiker_naam = '".mysql_real_escape_string(trim($_POST['gebruikersnaam']))."';";
$gebruiker_sql = mysql_query($gebruiker_query)or die(mysql_error());
$gebruiker_tellen= mysql_num_rows($gebruiker_sql);
if ($gebruiker_tellen == 1){
$rij = mysql_fetch_array($gebruiker_sql);
if(md5($_POST['wachtwoord']) == $rij['gebruiker_wachtwoord']){
session_start();
$_SESSION['gebruiker_id'] = $rij['gebruiker_id'];
$_SESSION['gebruiker_naam'] = $rij['gebruiker_naam'];
$_SESSION['gebruiker_rank'] = $rij['gebruiker_rank'];
header('Location: index.php');
}else{
echo 'Fout bij het inloggen. Probeer het opnieuw';
}
}else{
echo 'Fout bij het inloggen. Probeer het opnieuw';
}
}else{
echo '<table align="center"><form method="POST" action="inloggen.php">';
echo '<tr><td><input type="text" name="gebruikersnaam" value="gebruikersnaam"></td>';
echo '<td><input type="password" name="wachtwoord" value="wachtwoord"></td>';
echo '<td><input type="submit" name="inloggen" value="Inloggen"></td>';
echo '<td><a href="?registreren">registreren</a></td></tr></form></table>';
}
?>
error_reporting(E_ALL);
include('verbind.php');
// bovenstaan is om alle foutmeldingen op het beeldscherm te zetten.
// en we moeten natuurlijk de verbind.php include omdat we verbinding willen
// met de database
if(isset($_POST['inloggen']))
{
$gebruiker_query = "SELECT * FROM gebruiker WHERE gebruiker_naam = '".mysql_real_escape_string(trim($_POST['gebruikersnaam']))."';";
$gebruiker_sql = mysql_query($gebruiker_query)or die(mysql_error());
$gebruiker_tellen= mysql_num_rows($gebruiker_sql);
if ($gebruiker_tellen == 1){
$rij = mysql_fetch_array($gebruiker_sql);
if(md5($_POST['wachtwoord']) == $rij['gebruiker_wachtwoord']){
session_start();
$_SESSION['gebruiker_id'] = $rij['gebruiker_id'];
$_SESSION['gebruiker_naam'] = $rij['gebruiker_naam'];
$_SESSION['gebruiker_rank'] = $rij['gebruiker_rank'];
header('Location: index.php');
}else{
echo 'Fout bij het inloggen. Probeer het opnieuw';
}
}else{
echo 'Fout bij het inloggen. Probeer het opnieuw';
}
}else{
echo '<table align="center"><form method="POST" action="inloggen.php">';
echo '<tr><td><input type="text" name="gebruikersnaam" value="gebruikersnaam"></td>';
echo '<td><input type="password" name="wachtwoord" value="wachtwoord"></td>';
echo '<td><input type="submit" name="inloggen" value="Inloggen"></td>';
echo '<td><a href="?registreren">registreren</a></td></tr></form></table>';
}
?>
kan jij mij zeggen wat ik verkeerd heb aangeroepen?
Jammer dat je nog steeds niet checkt of wel heel je formulier is gepost (je checkt alleen of de controle variabele bestaat). Wat nou als je alleen de controle variabele post en de rest van het form niet? Wat heb je dan gecontroleerd?
Misschien kan je ook een leuke database abstractie laag gebruiken. Misschien staat er wel een leuke op phphulp.
Heb geen geduld om heel de tut door te lezen, maar het ziet er niet slecht uit, al is het niet mijn stijl.
Misschien kan je ook een leuke database abstractie laag gebruiken. Misschien staat er wel een leuke op phphulp.
Heb geen geduld om heel de tut door te lezen, maar het ziet er niet slecht uit, al is het niet mijn stijl.
Heee, zit er z???r netjes uit moet ik zeggen;)
Alleen heb ik 1 ding op te merken en dan wel dit
session_start();
$_SESSION['gebruiker_id'] = $rij['gebruiker_id'];
$_SESSION['gebruiker_naam'] = $rij['gebruiker_naam'];
$_SESSION['gebruiker_rank'] = $rij['gebruiker_rank'];
tip voor iedereen, NOOIT, MAAR DAN OOK NOOIT session_start(); gebruiken. Veel veiliger is dit:
include bovenstaande script op elke pagina gewoon:
ipv 'session_start()' op iedere pagina
(Trouwens, dit is niet van mijzelf: alle credits gaan naar Sijmen Ruwhof; http://www.phpfreakz.nl/artikelen.php?aid=106&page=14 )
Alleen heb ik 1 ding op te merken en dan wel dit
session_start();
$_SESSION['gebruiker_id'] = $rij['gebruiker_id'];
$_SESSION['gebruiker_naam'] = $rij['gebruiker_naam'];
$_SESSION['gebruiker_rank'] = $rij['gebruiker_rank'];
tip voor iedereen, NOOIT, MAAR DAN OOK NOOIT session_start(); gebruiken. Veel veiliger is dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
// session.inc.php
session_start();
ini_set('session.save_path', '/home/sijmen/tmp');
ini_set('session.name', 'hash'); # try to hide the session name..
if (!isset($_SESSION['ip']))
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
if ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR'];
trigger_error("Session Hijacking detected!", E_USER_WARNING);
?>
// session.inc.php
session_start();
ini_set('session.save_path', '/home/sijmen/tmp');
ini_set('session.name', 'hash'); # try to hide the session name..
if (!isset($_SESSION['ip']))
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
if ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR'];
trigger_error("Session Hijacking detected!", E_USER_WARNING);
?>
include bovenstaande script op elke pagina gewoon:
ipv 'session_start()' op iedere pagina
(Trouwens, dit is niet van mijzelf: alle credits gaan naar Sijmen Ruwhof; http://www.phpfreakz.nl/artikelen.php?aid=106&page=14 )
Voordeel is dat het weer een beetje 'veiliger' is.
Wachtwoorden worden onversleuteld verstuurd, hoe moeilijk kan het zijn om er eentje te onderscheppen? Daarnaast zou ik een aanval altijd vanuit hetzelfde netwerk proberen uit te voeren. Denk aan een bedrijfsnetwerk of een draadloos thuisnetwerk. Daar biedt deze methode geen beveiliging tegen.
Je blokkeert meteen het gebruik van sommige proxy-systemen (bijvoorbeeld Tor) en even wisselen van netwerk (bedraad naar draadloos vd buren) is er ook niet meer bij zonder opnieuw in te loggen. Zo is ook een router-reset niet prettig. Veel netwerkaanbieders (vooral in Belgi?) geven je om de zoveel tijd een ander IP-adres. AOL bijv. om de zoveel tijd, anderen bij iedere keer dat de router zich aanmeld bij de service provider.
En even serieus, hoe goed moet zo'n forum nu werkelijk beveiligd zijn? Zo goed dat gebruikersgemak eronder mag lijden?
De tip om session_save_path te verplaatsen is trouwens wel een goeie. Dat voorkomt het lekken van 'persoonlijke informatie' waneer je hosting provider amateuristisch bezig is. En die situatie is een stuk re?ler dan iemand die sessies steelt.
Wachtwoorden worden onversleuteld verstuurd, hoe moeilijk kan het zijn om er eentje te onderscheppen? Daarnaast zou ik een aanval altijd vanuit hetzelfde netwerk proberen uit te voeren. Denk aan een bedrijfsnetwerk of een draadloos thuisnetwerk. Daar biedt deze methode geen beveiliging tegen.
Je blokkeert meteen het gebruik van sommige proxy-systemen (bijvoorbeeld Tor) en even wisselen van netwerk (bedraad naar draadloos vd buren) is er ook niet meer bij zonder opnieuw in te loggen. Zo is ook een router-reset niet prettig. Veel netwerkaanbieders (vooral in Belgi?) geven je om de zoveel tijd een ander IP-adres. AOL bijv. om de zoveel tijd, anderen bij iedere keer dat de router zich aanmeld bij de service provider.
En even serieus, hoe goed moet zo'n forum nu werkelijk beveiligd zijn? Zo goed dat gebruikersgemak eronder mag lijden?
De tip om session_save_path te verplaatsen is trouwens wel een goeie. Dat voorkomt het lekken van 'persoonlijke informatie' waneer je hosting provider amateuristisch bezig is. En die situatie is een stuk re?ler dan iemand die sessies steelt.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
// session.inc.php
session_start();
ini_set('session.save_path', '/home/sijmen/tmp');
ini_set('session.name', 'hash'); # try to hide the session name..
?>
// session.inc.php
session_start();
ini_set('session.save_path', '/home/sijmen/tmp');
ini_set('session.name', 'hash'); # try to hide the session name..
?>
Dus jij wilt dit ervan maken? Hmm, eigenlijk heb je wel gelijk.
Foutje in de uitleg: http://www.phphulp.nl/php/tutorials/2/492/1181/
case 1: $rank = "Beheerder"; break;
// als $rij['gebruiker_rank'] = 1 $rank wordt: beheerder
case 2: $rank = "Moderator"; break;
// als $rij['gebruiker_rank'] = 2 $rank wordt: moderator
case 3: $rank = "Lid"; break;
// als $rij['gebruiker_rank'] = 3 $rank wordt: beheerder
dus rank 1 en 2 is zijn admins en rank 2 mod? :P
edit: had de reactie hierboven niet gezien :$
case 1: $rank = "Beheerder"; break;
// als $rij['gebruiker_rank'] = 1 $rank wordt: beheerder
case 2: $rank = "Moderator"; break;
// als $rij['gebruiker_rank'] = 2 $rank wordt: moderator
case 3: $rank = "Lid"; break;
// als $rij['gebruiker_rank'] = 3 $rank wordt: beheerder
dus rank 1 en 2 is zijn admins en rank 2 mod? :P
edit: had de reactie hierboven niet gezien :$
Ik krijg em toch niet helemaal lekker aan de praat. Ik krijg geen foutmeldingen maar als ik op index.php zit in mijn browser en ik druk op een topic, blijf ik gewoon index.php zien, dit geldt voor alles waar ik op druk.
Dit staat er in de URL: localhost/forum_test/index.php?bekijk_topic=1
Ik weet niet of dat goed is, als iemand mij zou kunnen helpen, heel erg bedankt. Heb al van alles geprobeerd maar kom er niet meer uit!
Bastiaan
Dit staat er in de URL: localhost/forum_test/index.php?bekijk_topic=1
Ik weet niet of dat goed is, als iemand mij zou kunnen helpen, heel erg bedankt. Heb al van alles geprobeerd maar kom er niet meer uit!
Bastiaan
hoe kan ik iemand admin maken?
dit snap ik niet helemaal en ik krijg ook die error
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\verbind.php:6) in C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\inloggen.php on line 15
Warning: Cannot modify header information - headers already sent by (output started at C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\verbind.php:6) in C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\inloggen.php on line 19
maar goed die los ik wel op alleen hoe maak ik iemand admin?
Gr Ricardo
dit snap ik niet helemaal en ik krijg ook die error
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\verbind.php:6) in C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\inloggen.php on line 15
Warning: Cannot modify header information - headers already sent by (output started at C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\verbind.php:6) in C:\Documents and Settings\Martijn van Wensveen\My Documents\www\forums\inloggen.php on line 19
maar goed die los ik wel op alleen hoe maak ik iemand admin?
Gr Ricardo
hoi ricardo,
Ik ben ook deze tut aan het uitproberen. Het is erg handig en goed uitgelegd.
Op veel servers staat phpMyAdmin. Als je hier gebruik van kunt maken kun je inloggen en naar de database gaan. Klik bij gebruikers op verkennen. Daarna kun je als je de gebruikers ziet staan de velden wijzigen. Hier kun je dus ook de rank wijzigen van 3 naar bijv. 1 (1=admin).
Succes
Ik ben ook deze tut aan het uitproberen. Het is erg handig en goed uitgelegd.
Op veel servers staat phpMyAdmin. Als je hier gebruik van kunt maken kun je inloggen en naar de database gaan. Klik bij gebruikers op verkennen. Daarna kun je als je de gebruikers ziet staan de velden wijzigen. Hier kun je dus ook de rank wijzigen van 3 naar bijv. 1 (1=admin).
Succes
Ik heb een bestaand login systeem in dit forum gebouwd, maar bij een topic/reactie posten, post hij de gebruikers_id/gebruikers_naam niet.
En ik heb geen flauw idee hoe ik dat wel werkend krijg.
De volgende link is mijn login
http://evolt.org/node/60384
Dat is het login systeem wat ik gebruik.
Wat moet ik doen om by "Posted by" de username van de poster te laten verschijnen?
Alvat bedankt!
Je kan mij ook altijd toevoegen op msn als dat makkelijker is: jeremy a grolman punt nl
En ik heb geen flauw idee hoe ik dat wel werkend krijg.
De volgende link is mijn login
http://evolt.org/node/60384
Dat is het login systeem wat ik gebruik.
Wat moet ik doen om by "Posted by" de username van de poster te laten verschijnen?
Alvat bedankt!
Je kan mij ook altijd toevoegen op msn als dat makkelijker is: jeremy a grolman punt nl
Als je de registratie invuld word je automaties als lid(3) geregistreerd. Maar hoe kun je inloggen als beheerder(1) of moderator(2) ik heb in de database mijn gebruikers_rank zelf maar ff gewijzigd om de boel te testen, maar kan dat ook anders, want ik zie nergens een apparte inlog voor de beheerder en moderatos staan
Quote:
Als je de registratie invuld word je automaties als lid(3) geregistreerd. Maar hoe kun je inloggen als beheerder(1) of moderator(2) ik heb in de database mijn gebruikers_rank zelf maar ff gewijzigd om de boel te testen, maar kan dat ook anders, want ik zie nergens een apparte inlog voor de beheerder en moderatos staan
Bedenk wel, deze tut is 3 jaar oud... de maker hiervan is misschien al weg.
Om te reageren heb je een account nodig en je moet ingelogd zijn.
- Details
Door:
Marvin S- 6 jaar geleden
- 2.654 x bekeken
- Labels
- Geen tags toegevoegd.
- PHP tutorials opties
- Data verwerking
- Nieuwste PHP tutorials
- PHP tutorial toevoegen


PHP hulp
0 seconden vanaf nu