Gå til innhold

Inviduelt passwd på mySQL database entry


Anbefalte innlegg

Har en database med medlemsinformasjon. Problemet er bare at det eneste man trenger for å få tilgang til og endre all medlemsinformasjon er medlemsnummeret.

 

Er det mulig å lage et system med passord i tillegg til medlemsnummeret, slik at hver og en kun har adgang til sin egen medlemsinformasjon, og at kun de kan endre det?

 

Tenkte å bruke etternavn (muligens også fornavn) og medlemsnummer som passord. Dvs. Medlemsnummer og etternavn (fornavn) må stemme over ens med hverandre for at en skal kunne redigere dataene i den raden.

 

Nå har alle medlemmer et tresifret medlemsnummer som begynner på 1 og løper oppover. Er det mulig å automatisk generere et tilfeldig 5-sifret medlemsnummer til alle 500 medlemmene, og overskrive det gamle i en og samme prosess? Kan eventuelt lage en ny kolonne for nytt medlemsnummer med et annet navn, for så å slette den gamle, og rename den nye.

 

På forhånd takk for all hjelp.

Lenke til kommentar
Videoannonse
Annonse

For å beskytte medlemsinfo må du i så fall legge til en sikkerhetsfunksjon i scriptet ditt. Dette kan gjøre på mange måter - og uten å vite noe om scriptet ditt foreslår jeg at du søker etter noen tutorial eller poster litt info om scriptet ditt.

 

Hvis du i dag bruker en query som

SELECT * FROM tabell WHERE id = '100'

 

hvor 100 er medlemmsnummeret.

 

Da kan du enkelt legge til kravet f.eks. fornavn og etternavn - hvis du bruker et skjema legg da til disse feltene.

 

SELECT * FROM tabell WHERE id = '100' AND etternavn = '$etternavn' AND fornavn = '$fornavn'

 

På denne måten må de vite fornavnet og etternavnet i tilegg!

Den sikreste måten ville kanskje være å bruke et passord i steden for eller i tillegg!

 

Ved å legge til et slik krav i spørringen slipper du å tenkte på å endre medlemsnummer - fordelene med dette er at du da kan se hvilke medlemmer som kom først og hvilke som er nye!

Lenke til kommentar

Jeg vil anbefale å legge til et passord. Dette ville jeg kryptert i databasen og brukt ssl for å overføre data (https://).

 

En enkel måte å gjøre dette på er f.eks.

 

Query for å legge til bruker

"INSERT INTO Medlemmer (Navn, Email, Pass) VALUES('$Navn', '$Email', '".md5($Pass)."');

 

Sjekke passord når du redigerer

$row=(mysql_fetch_array(mysql_query('SELECT * FROM Bruker WHERE ID='.$ID)));
if (md5($_POST['Passord'])==$row['Passord'])){
 $query="UPDATE Brukere SET Navn='".$_POST['Navn']....

Lenke til kommentar
Jeg vil anbefale å legge til et passord. Dette ville jeg kryptert i databasen og brukt ssl for å overføre data (https://).

 

En enkel måte å gjøre dette på er f.eks.

 

Query for å legge til bruker

"INSERT INTO Medlemmer (Navn, Email, Pass) VALUES('$Navn', '$Email', '".md5($Pass)."');

 

Sjekke passord når du redigerer

$row=(mysql_fetch_array(mysql_query('SELECT * FROM Bruker WHERE ID='.$ID)));
if (md5($_POST['Passord'])==$row['Passord'])){
 $query="UPDATE Brukere SET Navn='".$_POST['Navn']....

Mulig å gjøre dette uten SSL?

Lenke til kommentar

SSL sikrer bare informasjonene mellom brukerene (client) og serveren - så det er fult mulig uten SSL.

Dersom siden din ikke er utsatt for mange hackere er ikke SSL så viktig.

 

Siden jeg mener man brude gjøre mye for å tette sikkerhetshull i scripts fraråder jeg deg ikke å bruke SSL - påpeker at det ikke alltid er like nødvendig og ikke alltid verdt kostnaden (ved mindre du bruker open ssl).

 

Ta like vel en kikk på hvordan du kan sikre data før det sette inn i en SQL database: http://no.php.net/manual/en/function.mysql-escape-string.php

 

Les også kapittelet om sikkerhet i PHP:

http://no.php.net/manual/en/security.index.php

Lenke til kommentar

Har nå laget et script som automatisk genererer og setter passord etter hvert som brukerne logger inn, men får denne feilmeldingen:

 

Notice: Undefined variable: out in D:\Programfiler\Apache Group\Apache2\htdocs\Medlem\medlemsview.php on line 46

Ditt passord er: 5i7gb

Ta godt vare på dette. Du vil trenge det ved senere innlogginger.

 

Det som er merkelig er at scriptet fungerer helt fint, til tross for feilmeldingen.

 

Her er koden:

 

/* Kontrollerer om det er satt passord */
  $query_pass = "SELECT Passwd FROM medlemmer WHERE id = $id AND Etternavn = '$etternavn'";
  $result_pass = mysql_query($query_pass) or die("Spørring feilet : " . mysql_error());

 
  $row=(mysql_fetch_array(mysql_query('SELECT Passwd FROM medlemmer WHERE id='.$id)));
  
  if (isset($row['Passwd'])) {

  echo ("<br>");
  }
  
  else {
  
   function password ($len) {

$chars = "abcdefghijklmnopqrstuvwxyz123456789";

mt_srand( (double) microtime() * 100000000);

for ($i=1;$i<=$len;$i++) $out .= $chars[mt_rand(0,(strlen($chars)-1))];

return $out;

}

$password = password(5);
echo("Ditt passord er: $password <br>");
echo("Ta godt vare på dette. Du vil trenge det ved senere innlogginger.");


    $query_setpass = "UPDATE medlemmer SET id='$id', Passwd='".md5($password)."' WHERE id = '$id'";
    $result_setpass = mysql_query($query_setpass) or die("Spørring feilet : " . mysql_error());
 
   }   

 

Noen tips til hvordan bli kvitt feilmeldingen?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...