Login Systeem tips?

Status
Niet open voor verdere reacties.

indexspelen

Gebruiker
Lid geworden
17 mei 2008
Berichten
90
Ik ga binnekort mijn hele site naar een hoger niveau brengen,
En dat plan ik te doen met een registratie & inlog systeem.

Ik ben er al wat over aan het nadenken,
En ik vroeg me enkele dingen af.
--
1. Als een user zich registreert, zou er dan een nieuwe tabel in mysql moeten komen
Of zou ik 1 tabel maken met de naam: 'users' ?
-Het zou wel zo moeten zijn, dat elke user appart zijn favoriete spelletjes moet kunnen opslaan in mysql.

2. Ik wil niet dat hele pagina's beveiligd worden. Enkel sommige delen op deze pagina.
Is dat mogelijk om zoiets te maken?

3. Ik snap niet echt veel van Sessies in php. Heeft iemand hier misschien een link naar een duidelijke tutorial hierover?


Alvast bedankt ;)
 
tip: ga niet aan een loginscript beginnen als je "niet eens weet" wat sessies inhouden. klinkt een beetje bot maar dan is een loginscript te hoog gegrepen.

korte uitleg sessies:

bovenaan je pagina zet je dit neer:

PHP:
session_start();

dit betekent dat je dus een sessie moet starten, dit moet gebeuren VOOR ELKE ANDERE CODE.

er zijn veel verschillende manieren van sessies, maar je kunt ze veel simpeler gebruiken. ik gebruik op mijn sites met een talensysteem altijd heel simpel:

zodra er op de nederlandse vlag word geklikt wordt de sessie gezet naar nl, namelijk zo:

PHP:
$_SESSION['language'] = "nl" ;

Dit betekent dat ik de sessie ( $_SESSION ) genaamd "language" ( ['language'] ) de waarde nl geef ( "nl" )

vervolgens zet ik de taal naar Nederlands:

PHP:
if ( $_SESSION['language'] == "nl"){
blablabla
}
zo doe kan ik het natuurlijk ook doen met engels:
PHP:
$_SESSION['language'] = "en" ;

LET OP:
Geef de session altijd een naam, ook als je hem oproept moet je hem bij de naam roepen. Dit komt omdat er meerdere sessies kunnen zijn. ( dus niet $_SESSION = "nl" )

Voor extra informatie kun je altijd naar Google. type gewoon in Tutorial Sessions en er zijn vast wel sites die je kunnen helpen. Hopelijk heb je hier iets aan.
 
Geen tijd en zin om sessies uit te typen, maar kleine kanttekeningen bij wat falcojugger hier schrijft:
tip: ga niet aan een loginscript beginnen als je "niet eens weet" wat sessies inhouden. klinkt een beetje bot maar dan is een loginscript te hoog gegrepen.
Helemaal gelijk. Zoek kleine scriptjes om sessies en/of cookies te leren begrijpen: een loginsysteem kan (bijna) niet zonder.


dit betekent dat je dus een sessie moet starten, dit moet gebeuren VOOR ELKE ANDERE CODE.
Vanuit vergetelheidsperspectief van de programmeur is dit een veilige redenering, echter mag er wel code voor session_start() staan, er mag geen output verzonden worden voor deze aanroep.

Dit betekent dat ik de sessie ( $_SESSION ) genaamd "language" ( ['language'] ) de waarde nl geef ( "nl" )
Ook dit is niet helemaal waar. $_SESSION is een array (zie ook php.net). Wat daar gebeurd, is dat de associatieve index met naam language wordt aangemaakt, en als waarde nl krijgt.
 
Mijn excuses Johan

Allereerst voor het geval betreft session_start();
Dit is er gewoon bij mij zo ingebakken dat ik het automatisch als eerste doe als ik iets nieuws aanmaak. Johan heeft wel gelijk dat het voor de eerste output moet komen, het nadeel is dat als je het ergens middenin een reeks code zet, je het overzicht kwijt raakt.

Ook wat betreft mijn uitleg heeft hij gelijk,
Ik dacht het alleen zo even makkelijk uit te leggen. Een sessie is inderdaad een array, maar ik wist niet zeker of je het zou begrijpen. Als je mijn tip opvolgt door een tutorial te volgen kom je er zeker achter.

hier een link met een stap voor stap uitleg over PHP (wel in het engels): http://www.w3schools.com/PHP/php_intro.asp

hier een link met uitleg over sessions/sessie (in het engels): http://www.w3schools.com/PHP/php_sessions.asp
 
Mijn excuses Johan
Die hoeven helemaal niet :)

Het is inderdaad goed om in het begin met vereenvoudigde definities te werken als die de lading voldoende dekken. Alleen was uit je uitleg dus niet op te maken dat jij wel het volledige(re) plaatje kende.
 
Sorry voor mijn late reactie,
Maar ik had het eventjes erg druk de laatste dagen.
Nu ga ik dan ook maar even reageren op jullie posts ;)

Falco, alvast bedankt voor je reactie.
Nu is het niet zo dat ik niks van php weet omdat ik niks van sessies weet.
Ik weet dus wel degelijk wat arrays zijn :)

Én ik ben dus wel degelijk van plan een inlog systeem te gaan maken.
Ik ga hoogstwaarschijnlijk wel wat moeten spieken bij andere scripts,
aangezien dit ook mijn eerste inlogscript is.

Ook bedankt voor de link naar een tutorial over sessies.
Aangezien ik nog geen enkele fatsoenlijke had gevonden.


Nu heb ik toch nog enkele ( voor jullie ) simpele vraagjes.
Op mijn website wil ik dat ( voor ingelogde leden ) alleen enkele dingen extra komen.
Dus niet-ingelogde viewers moeten de webpagina ook wel zien,
Maar sommige delen mogen alleen gezien worden door ingelogde users.
Ik ga nu niet vragen voor een heel inlogscript, dat ga ik zelf maken.
Maar ik hoop dat jullie me even in de goede richting kunnen brengen.
Ik ga nu even een poging proberen :) :

PHP:
<?
 // Hier moet dus een heel inlogscript komen .. ik ga dit even overslaan ^^
 if ('user == ingelogd')  // Is het mogelijk om dit zo te doen?

  $_session['forumlink']=<a href="forum.html">forumlink</a>;
  $_session['chatbox']=<a href="chatbox.html">chatbox</a>;
</php>
<html>
 <head>
 <head>
  <body>

<? echo $_session['forumlink'] ?> <br> <!-- Dit deel moet onzichtbaar zijn -->
<? echo $_session['chatbox'] ?> <br> <!-- voor mensen die niet aangemeld zijn. -->

Deze tekst is zichtbaar voor niet aangemelde leden

  </body>
</html>

Klopt dit een beetje?
Die 2 links zouden dus enkel zichtbaar moeten zijn voor ingelogde mensen.
Ik hoop dat dit ongeveer zou moeten werken, als ik het verder zou afwerken uiteraard.
 
PHP:
 if ('user == ingelogd')  // Is het mogelijk om dit zo te doen?

Dit gaat niet werken. Omdat je aanhalingstekens om het hele stuk 'user == ingelogd' hebt gezet, wordt alleen gekeken of de tekst niet leeg is, en hij is per definitie niet leeg, dus hij zal altijd waar geven, of je nou ingelogd bent of niet.

Daarnaast is het idd mogelijk om zo links toe te voegen maar erg handig is het niet.
Je kunt beter gewoon binnen het if() blok (als het eenmaal werkt) de hele tekst outputten ipv variabelen setten en die later echo'en voor iedereen:

PHP:
<?php if ( $_server['logged_in'] == true ): ?>
<!-- hier komt een stuk HTML dat alleen ingelogde gebruikers kunnen zien.
<?php endif; ?>
 
Nou ben ik ook niet zo'n expert in loginsystemen, ik maak er niet elke dag één.
maar mocht je bijvoorbeeld met sessies gaan werken:

in een sessie sla je dus bepaalde waardes op, als iemand inlogt krijgt deze dus bepaalde waardes. deze waardes hoef je alleen maar terug te laten komen door middel van een if-else statement (waar je in principe al mee begonnen was).

nou moet ik dus nogmaals bekennen dat ik niet zo goed ben in loginsystemen maar het moet gewoon iets worden als:

PHP:
session_start();

if ( $_SESSION['login'] == true ){
echo "Je bent ingelogd dus je krijgt dit te zien!";
}

Mocht je willen dat bepaalde gebruikers (bijv. betaald) bepaalde reclame op je site niet meer zien, dan kun je het denk ik zo doen (waarschijnlijk gaat hier commentaar op komen)

PHP:
session_start();

if ( $_SESSION['login'] != true ) {
echo "nu zie je reclame";
}

of

PHP:
if ( $_SESSION['login'] == false ) {
echo "nu zie je nog steeds reclame";
}
het is gewoon beetje creatief zijn en kijken waar het schip strandt.
 
PHP:
 if ('user == ingelogd')  // Is het mogelijk om dit zo te doen?

Dit gaat niet werken. Omdat je aanhalingstekens om het hele stuk 'user == ingelogd' hebt gezet, wordt alleen gekeken of de tekst niet leeg is, en hij is per definitie niet leeg, dus hij zal altijd waar geven, of je nou ingelogd bent of niet.

Ik weet zelf ook wel dat het niet gaat werken op deze manier ;)
Ik ga met $_post vergelijken wat hij heeft ingegeven in de form, en of dat daadwerkelijk ook wel bestaat in de database.

----------------

Ik heb nu trouwens een goed script gevonden,
waarop ik het mijne ga baseren.
Uiteraard ga ik niks kopiëren, dan leer ik er ook niks van.

Iedereen bedankt voor je hulp bij het oplossen van mijn probleem :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan