login  Naam:   Wachtwoord: 
Registreer je!
 Forum

login pagina

Offline thomson2960 - 12/05/2011 21:25
Avatar van thomson2960Nieuw lid Hallo,

Ik heb een php inlogpagina gemaakt met een mysql database. Wij zijn een vereniging en ik wil graag een pagina maken waarop enkel leden van onze vereniging deze info kunnen bekijken.

Omdat ik enkel toegang wil verlenen aan onze leden ken ik deze en heb ik alle nodige informatie al ingevoerd in een sql database. tot dusver geen probleem.

Bij het aanmaken van deze database heb ik voor allen een standaard wachtwoord ingegeven. Bestaat er een simpele code wanneer zij aanmelden met het vooraf ingestelde standaard wachtwoord dat ze een eigen wachtwoord invoeren?

Wie kan mij helpen?

alvast bedankt.

10 antwoorden

Gesponsorde links
Offline vinTage - 12/05/2011 21:29
Avatar van vinTage Nieuw lid euhm, een simpele code..

check eens "UPDATE"
Offline valles10 - 12/05/2011 22:48
Avatar van valles10 HTML interesse met een if bij het inlogge checken of de gebruiker nog steeds het standaardpass heeft. Zoja, dan laat je een pagina met ww veranderen zien. Zoniet dan laat je gewoon de site zoals het moet zien.

Bij het wachtwoord veranderen werk je net hetzelfde als bij het registreren. Alleen met het verschil dat je nu i.p.v "INSERT INTO tabel () values ()", "UPDATE tabel SET wachtwoord = $nieuw_ww WHERE username = $username"

dit is een simpel voorbeeld, je moet het zelf wel nog beveiligen, want als je dit gaat gebruiken ben je zo gehackt 
Offline Wim - 13/05/2011 16:29
Avatar van Wim Crew algemeen Het beste lijkt mij om een veld aan je database toe te voegen waarin je bewaart of de user zijn password moet wijzigen of niet (tip: ENUM('0','1') veld). Als dit veld op "1" staat laat je de user zijn password updaten (het is namelijk de eerste keer dat hij inlogt). Vanaf hij zijn password dan wijzigt update je zijn password in de database en zet je het veld op '0'. Zo kan je later ook nog makkelijk forceren om een user bij de volgende login zijn password te laten wijzigen.
Offline thomson2960 - 18/05/2011 20:38 (laatste wijziging 18/05/2011 22:11)
Avatar van thomson2960 Nieuw lid Het is moeilijker als het eruit ziet.

Ik heb tabel met Id, username, password and passwordcheck (dit laatste is enum 0 1).

op de login pagina heb ik een veld username and password.

de logincheck.php controleert de username and password en als dit ok is gaat hij naar de login_success.php . Hoe kan ik zeggen dat als het veld passwordcheck waarde 1 heeft, de gebruiker naar de pagina changepassword moet gaan en als dit waarde 0 heeft gewoon verder gaat naar de beveiligde pagina?

Ziehier mijn code:
  1. <?php
  2. $host="localhost"; // Host name
  3. $username="xxx"; // Mysql username
  4. $password="xxxxx"; // Mysql password
  5. $db_name="members"; // Database name
  6. $tbl_name="leden"; // Table name
  7.  
  8. // Connect to server and select databse.
  9. mysql_connect("$host", "$username", "$password")or die("cannot connect");
  10. mysql_select_db("$db_name")or die("cannot select DB");
  11.  
  12. // username and password sent from form
  13. $myusername=$_POST['myusername'];
  14. $mypassword=$_POST['mypassword'];
  15.  
  16. // To protect MySQL injection (more detail about MySQL injection)
  17. $myusername = stripslashes($myusername);
  18. $mypassword = stripslashes($mypassword);
  19. $myusername = mysql_real_escape_string($myusername);
  20. $mypassword = mysql_real_escape_string($mypassword);
  21.  
  22. $sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
  23. $result=mysql_query($sql);
  24.  
  25. // Mysql_num_row is counting table row
  26. $count=mysql_num_rows($result);
  27. // If result matched $myusername and $mypassword, table row must be 1 row
  28.  
  29. if($count==1){
  30. // Register $myusername, $mypassword and redirect to file "login_success.php"
  31. session_register("myusername");
  32. session_register("mypassword");
  33. header("location:login_success.php");
  34. }
  35. else {
  36. echo "Wrong Username or Password";
  37. }
  38. ?>


Kan iemand me helpen, je zou me er een groot plezier mee doen.
Offline Aar - 18/05/2011 21:09 (laatste wijziging 18/05/2011 22:25)
Avatar van Aar PHP interesse session_register() is een antieke functie. Ook foutafhandeling ontbreekt.
Offline thomson2960 - 25/05/2011 21:11
Avatar van thomson2960 Nieuw lid Ik ben nog niet lang bezig met php. Momenteel werkt dit script al een tijdje op onze website, maar heb pas het onderhoud van de website van onze vereniging overgenomen. Ik heb al enkele kleine aanpassingen uitgevoerd, maar ik zit met een probleem dat ik niet opgelost krijg. IK heb iedereen die ik wil toelaten tot de geheime inhoud (enkel voor leden bestemd) in een mysql database. Deze database bevalt id, naam, password en passwordupdate. deze laatste is een 0,1 veld.

Ik wil dat php checkt of naam en password overeenkomt. Zo ja moet hij volgende stappen uitvoeren:
als passwordupdate = 0 moet hij gaan naar passwordupdate.php
als passwordupdate = 1 moet hij gaan naar geheim.php

anders error.php en link naar homepage.

momenteel kan enkel leden met passwordupdate = 1 de geheime inhoud zien en alle andere gaan naar de pagina passwordupdate.php, ook diegene die geen lid zijn.

session_register() is misschien wel een antieke functie, maar hij werkt volgens mij nog wel naar behoren. Als ik toch bezig ben met het vernieuwen van dit script, wat raden jullie me dan aan.

<?php
ob_start();
$host="localhost"; // Host name
$username="xxxx"; // Mysql username
$password="xxxxxxxx"; // Mysql password
$db_name="members"; // Database name
$tbl_name="leden"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword' and passwordcheck='1'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row


if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
else {header("location:passwordupdate.php");
echo "Wrong Username or Password";
}



ob_end_flush();
?>
Offline ArieMedia - 26/05/2011 08:52 (laatste wijziging 26/05/2011 08:53)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Citaat:
session_register() is misschien wel een antieke functie, maar hij werkt volgens mij nog wel naar behoren. Als ik toch bezig ben met het vernieuwen van dit script, wat raden jullie me dan aan.
Kan onveilig zijn (hackgevoelig), of er bij een volgende release uitgehaald worden.
Tegenwoordig kan het gewoon zo

  1. <?php
  2. session_start(); // is belangrijk, anders werken sessies sowieso niet.
  3. /**
  4.   * groot script
  5.  **/
  6. $_SESSION['naam'] = 'Freddy';
  7. $_SESSION['userlvl'] = 32;
  8.  
  9. ?>

een wachtwoord opslaan in een sessie is zeer onveilig, met een simpele FF plugin kan je cookies uitlezen (want ja, ook sessies werken onder water met een cookie).

Om antwoord te geven op jou andere vraag
  1. <?php
  2. $user = $_POST['user'];
  3. $pass = $_POST['pass'];
  4. // !! $user en $pass moet je zelf nog beveiligen
  5. $sql = 'SELECT * FROM tabel WHERE username = "'.$user.'" AND password = "'.$pass.'"';
  6. $qrs = mysql_query($sql);
  7. $rs = mysql_fetch_assoc($qrs);
  8. // !! Ook hier zelf nog foutafhandeling ect, ingooien. bekijk bijvoorbeeld eens mysql_num_rows()
  9. if($rs['passwordcheck'] == 1) {
  10. // ga naar verander.php
  11. } else {
  12. // ga maar door
  13. }
  14. ?>
Bedankt door: thomson2960
Offline thomson2960 - 28/05/2011 13:58 (laatste wijziging 28/05/2011 14:00)
Avatar van thomson2960 Nieuw lid Ik heb aantal aanpassingen gedaan van wat je hierboven hebt opgesomd:

$_Session[naam] heb ik vervangen door $_SESSION['myusername'] = $myusername;
$_session[userlvl] waar slaat die 32 op?? en Freddie, is dat een willekeurige naam?

Moet ik op de login_success.php deze session gegevens herhalen?
Is dit dan ok? (zie code hieronder)

met deze aanpassingen geeft hij steeds wit scherm van checklogin.php en gaat niet verder. alsof hij geen connectie heeft met de database.
ben ik echt zo dom of is php moeilijker als gedacht.

gegevens beveiligen zoek ik later wel uit, eerst wil ik een werkend script.

code login_success.php

<?php
session_start();
if($_SESSION['username'] == true)){

header("location:login_sussess.php");
}
else{
echo "Not allowed to be here";
//header('Location: index.php');
}
?>


<?
session_start();
session_destroy();
?>
?

code checklogin
<?php

session_start(); // is belangrijk, anders werken sessies sowieso niet.

$host="localhost"; // Host name
$username="luc"; // Mysql username
$password="test123"; // Mysql password
$db_name="members"; // Database name
$tbl_name="leden"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword


$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);


$sql = "SELECT * FROM $tbl_name WHERE username = '$myusername' AND password = '$mypassword'";
$qrs = mysql_query($sql);
$rs = mysql_fetch_assoc($qrs);

if($rs['passwordcheck'] == '1') {header("location:passwordupdate.php")
// ga naar verander.php
} else {header("location:login_success.php");
// ga maar door
}
$_SESSION['myusername'] = $myusername;
$_SESSION['userlvl'] = 32;

?>
Offline kilian - 28/05/2011 21:44
Avatar van kilian Lid
ArieMedia schreef:
een wachtwoord opslaan in een sessie is zeer onveilig, met een simpele FF plugin kan je cookies uitlezen (want ja, ook sessies werken onder water met een cookie).


Ja en nee. Er is inderdaad een sessie cookie waarin het ID van de sessie staat. Data die je in een sessievariabele steekt wordt echter op de server opgeslagen. Adv die sessie cookie wordt gekeken welke data bij welke gebruiker hoort.

Wel blijft het een feit dat het niet veilig is om een wachtwoord in een sessie op te slaan. Indien de server er niet tegen beveiligd is is het in principe mogelijk dat mensen die op dezelfde server zitten als jou (zoals steeds het geval is bij de "shared hosting" pakketten) de data kunnen uitlezen van sessies die jou script bij jou bezoeker wegzet.

Als je trouwens adv. sessies wilt controleren of een gebruiker al dan niet is ingelogd moet je ook eens kijken naar session_regenerated_id (let op: geef als argument true mee). Door deze functie veranderd het sessie ID steeds, waardoor het lastiger wordt een login te "spoofen" en zo zonder in te loggen toch toegang te krijgen tot de beveiligde inhoud.
Offline ArieMedia - 29/05/2011 20:38
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
thomson2960 schreef:
Ik heb aantal aanpassingen gedaan van wat je hierboven hebt opgesomd:

$_Session[naam] heb ik vervangen door $_SESSION['myusername'] = $myusername;
$_session[userlvl] waar slaat die 32 op?? en Freddie, is dat een willekeurige naam?

Moet ik op de login_success.php deze session gegevens herhalen?
Is dit dan ok? (zie code hieronder)

met deze aanpassingen geeft hij steeds wit scherm van checklogin.php en gaat niet verder. alsof hij geen connectie heeft met de database.
ben ik echt zo dom of is php moeilijker als gedacht.

gegevens beveiligen zoek ik later wel uit, eerst wil ik een werkend script.
blabla...


Ik heb je de query voorgekauwd, kopier dat eens, dan doet je pagina het tenminste ($sql = 'blabla');
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.205s