Loginmodul med database

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009

Heisann, sitter å styrer med å få til ett .php login-script. Har lest gjennom denne da:

Men er ikke helt sikker på om den vil fungere til mitt bruk. Testet litt, men fikk det ikke til...

Opplegget:

Ett database opplegg, trur jeg. Medelemsskap.

Først må man registrere seg:

For å kunne registrere seg, så må man "søke". Dette gjøres lett via ett "form" og en kombinasjon av diverse inndata som sammsvarer med hverandre (lagret i vår database):

  1.  - Registrert medlemsnummer/kundenummer (tall)
  2.  - Registrert Fullt navn
  3.  - Registrert e-post

Disse faktorene er forhåndssatt og må stemme overens med hverandre.

VIKTIG! Det må naturligvis ikke være mulig å kombinere data på tvers av brukere.

Neste skritt:

  • Hvis informasjonen samsvarer, så kommer man til en side hvor det står at man er kvalifisert til å gå videre.
  • Hvis det ikke, så kommer man til en annen side med feilmelding.

(Akkurat denne funksjonen har jeg fått til. Har brukt If...Else.) - Men kun basert på en faktor.

  • Hvordan får jeg til at den skal sjekke att alle 3 feltene er fylt inn med riktig informasjon?

Slik ser mitt .php ut akkurat nå: (Hvordan får jeg til en kodeboks?)

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Sjekke data fra database

Først en betraktning: Både brukerens navn og epostadresse kan være kjent for tredjepart. Det er en smal sak å hacke et slikt system når medlemsnummeret er eneste ukjente faktor.

For å kontrollere om samtlige felter er korrekte kjører du naturligvis en spørring mot alle tre samtidig, type:

SELECT * FROM user_table
  WHERE user_id = 1
    AND user_email = 'foo@bar.com'
    AND user_name = 'Svette Mannen'
  LIMIT 1;

Du sikrer selvsagt data før de går inn i spørringen, da dette er kun eksempel på en query med sikrede og statiske data.

Hvis brukeren blir funnet i databasen, så er han naturligvis i databasen, og feilmeldinger er ikke nødvendig.

Problemet oppstår imidlertid nå siden du har 3 datum.

  1. medlemsnummer
  2. epost
  3. navn

Var jeg deg, ville jeg sendt tilbake en uniform feilmelding til alle som forsøkte å logge på, men som det ikke fantes samsvar med i databasen.

Hvis du likevel ønsker å opplyse om hvilket felt som kan være feil, så må du velge hvilket felt som skal være autoritært.

Flere brukere kan hete det samme, mens epost og medlemsnummer er unike. Du foretar så en ny spørring basert på det datum som er mest autoritært, la oss si epostadressen.

Det neste blir så å se om det i det heletatt er noen registrert med den epostadressen. Hvis ikke, kan du kjøre en ny spørring mot brukerID og så se om det er noen med et annet navn eller epost som har brukerIDen.

Med alt dette lagret i arrayer, kan du så begynne å kjøre if statements for å se hva som stemmer og hva som ikke stemmer.

Dette blir som du ser meget krunglete, og nytten av dette er ikke verdt innsatsen om du spør meg. Uniform feilmelding vil være langt mer hensiktsmessig.

Angående kodefelt: Det er ikke aktivert i WYSIWYG editoren, kun når jeg skriver HTML som administrator manuelt :). Jeg skal se å få det lagt inn iløpet av kort tid. I mellomtiden kan du paste det i vanlig tekst, så skal jeg gå inn og redigere innlegget ditt slik at det blir tydeligere.

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
Hmmm, trur kansje du

Hmmm, trur kansje du missforstod littegranne her. Jeg har ikke tenkt å vise til hvilke felt som er feil.

Slik ser val.php ut for øyeblikket:

<?php
 
// Dette er den godkjente infomasjonen:
 
$nameAuth = "Fnavn Enavn";
 
$memberAuth = "1234567";
 
$mailAuth = "navn@post.no"
?>


<div id="page_heading"><h1>
  <?php
 
//Dette er side overskriften
 
if ($_POST["name"]==$nameAuth && $_POST["member"]==$memberAuth && $_POST["mail"]==$mailAuth)
        echo
"Godkjent!";
    else
        echo
"Avslag!";
 
?>

</h1></div><!---  #page_heading  -->
<div id="search_text">
  <?php
 
//Dette er innholdet på siden (svaret du får)
 
if ($_POST["name"]==$nameAuth && $_POST["member"]==$memberAuth && $_POST["mail"]==$mailAuth)
        echo
"<p>Du er registrert i vår database</p><p>Ønsker du å registrere deg som medlem for å få tilgang til sidene,<br />så kan du klikke på linken nedenfor.</p>";
    else
        echo
"<p>Informasjonen du har lagt inn er ikke registrert i vår database<br />
      Se etter att du har skrevet riktig</p>
      <p><strong>Informasjonen du har lagt inn:</strong></p>
      <strong>navn:</strong> "
. $_POST["name"] . "<br />
      <strong>Medlems nr.:</strong> "
. $_POST["member"] ."<br />
      <strong>e-post:</strong> "
. $_POST["mail"];
 
?>

</div><!--  #search_text  -->
<div id="contact_links">
  <a href="/_testing/reg.php">
    <?php
   
// Her får du eventuelt en link til registrerningssiden (hvis informasjonen er godkjent)
     
if ($_POST["name"]==$nameAuth && $_POST["member"]==$memberAuth && $_POST["mail"]==$mailAuth)
        echo
"<p>Jeg ønsker å registrere meg</p>";
      else
        echo
" ";
   
?>
</a>
</div><!--  #contact_links  -->   

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Sett session

Du spurte innledningsvis:

Hvordan får jeg til at den skal sjekke att alle 3 feltene er fylt inn med riktig informasjon?

Det er da det du gjør her:

<?php
if ($_POST["name"]==$nameAuth && $_POST["member"]==$memberAuth && $_POST["mail"]==$mailAuth)
?>

Det er heller ikke smart å gi en link til registreringssiden uten å sette en session (slik at det kun er de som faktisk har info i databasen som kan registrere seg).

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
Sessions?

mente du nå? session hvor?

Fant ut av hvordan jeg jeg skjekket at alle feltene innehar riktig data. Men hvordan setter jeg opp slik at jeg kan legge in flere forskjellige brukere?

 

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
MySQL hjelp?

Åh, trodde loginscriptet ditt var en forenkling uten diverse MySQL info. Er det du egentlig lurer på hvordan man oppretter tabeller i databasen, legger inn data i tabellene og henter ut informasjon fra den basert på brukerinput ved hjelp av PHP?

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
Tja, hørtes jo riktig ut

Tja, hørtes jo riktig ut da...

Altså, si jeg har 10+ medlemmer da. Og alle har jo ett navn, ett medlemsnummer og en epost.

Denne informasjonen må være lagret en vei (database?)

Så, når de fyller ut formen, så sammenlignes inputen med (databasen?)

Når dette er gjort, får man ett enkelt svar på om det er godkjent eller ikke.

EDIT: Man kan ikke registere seg uten at man ligger i databaser. Det er heller ikke mulig å legge til nye brukere fra noen form...

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
MySQL administrasjon

Opprett en ny tråd hvor du spør om hvordan man lager tabeller i databasen. Dette blir et rimelig bredt emne, og det fortjener sin egen tråd.

Grunnen til at jeg er en "trådhitler": Hvis andre er på utkikk etter hvordan man lager tabeller i MySQL i fremtiden, så kan de få svar på akkurat det ved å lese én løsningsorientert tråd. Dette er en generell problemstilling, mens problemet du søker løst her er ditt individuelle problem. Vi skiller derfor mellom individuelle problemer, og problemer andre folk kan støte på i fremtiden.

Din jobb blir å sy alt sammen, slik at det fungerer til slutt, hehe.

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
Opprettet felter og tabeller i MySQL-database

Har opprettet et table med 3 felter i MySQL, samt noen brukere...

Hva gjør jeg nå? hehee, skjønte ingenting av det siste jeg...

Altså, nå ønsker jeg at informasjonen som er lagret i MySQL-databasen skal brukes når en bruker sjekker, via form, om de er kvalifisert.

Form ser slik ut

<form id="search" name="search" method="POST" action="?">
    Navn: <input name="name" type="text" value="ditt  registrerte navn" size="30" />
    Medlems-nummer:  <input name="member" type="text" value="ditt registrerte medlems-nummer" size="30" />
    E-post: <input name="email" type="text" value="din registrerte e-post" size="30" />
    <input type="submit" value="Send forespørsel" />
</form>

med hilsen
Thomas Kile

Svar på forumemnet

(If you're a human, don't change the following field)
Your first name.
Innholdet i dette feltet blir holdt privat og vil ikke bli vist offentlig.