Gå til innhold

Hjelp, vær så snill! -Bare én bruker funker=( ...


Anbefalte innlegg

Å, jeg får det ikke til... Jeg er en ivrig nybegynner som har fått til et login- script, men jeg greier ikke å ha flere en én bruker om gangen :(

- Jeg har stilt samme spørsmål på flere andre forum, så dette blir siste forsøk...

 

Altså:

Jeg har laget et lite innloggings script, men greier ikke å få til slik at jeg kan ha flere brukere. Scrpitet ser slik ut:

 

Index.php:

<html>
<form method='post' action='login_ok.php'>
Brukernavn :: <input type='text' name='brukernavn' size='14'>¨
<br>
Passord :: <input type='password' name='passord' size='14'><br>
<input type='submit' name='login' value='Login'>
</html>

 

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

 

config.php:

<?php

$bruker = "Fredrik";
$bruker = "Webmaster";
$pass   = "start";
$pass   = "john";

?>

 

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

 

login_ok.php:

<?php
include("config.php");
if($_POST[brukernavn] == ""){
echo"Brukernavnet er ikke skrevet"; // sjekker om brukernavnet er skrevet.
}
if($_POST[passord] == ""){
echo"Passordet er ikke skrevet"; // sjekker om passord er skrevet.
}
if($_POST[brukernavn] == "$bruker"){ // sjekker om brukernavn passer.

if($_POST[passord] == "$pass"){ // sjekker om passord passer.


// bruker vidresendes
header("Location: default.php?brukernavn=$_POST[brukernavn]&passord=$_POST[passord]"); 
}
}
else {
 
 echo"Du skrev inn feil brukernavn eller passord.";
}
?>

 

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

 

default.php

<?php
if($_GET[brukernavn]) {
?>
<html>

<head>
<title>Index</title>
</head>

<body bgcolor="#F5F5F5">

<?php
echo" Velkommen $_GET[brukernavn]";
?>

</body>
</html>

<?php
}
else {
echo"Brukernavn korrupt. Visning av side misslyktes. Forsøk å logge på en gang til.";
}
?>

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

 

Det som skjer er at det bare er det brukernavnet som står sist (Webmaster) og passordet som står sist (john) som virker.

Skriver jeg f.eks. Fredrik på brukernavnet og start i passordfeltet blir det feilmelding.

Hvordan kan jeg ha flere brukere samtidig i dette scriptet?

 

- På forhånd takk for all hjelp dere vil gi en nybegynner!

Lenke til kommentar
Videoannonse
Annonse

$bruker = "Fredrik"; setter først variabelen $bruker til "Fredrik". Deretter endrer du variabelen til å ha verdien "Webmaster". Det kan du løse ved å sette $bruker2 = "Webmaster", og sjekke verdien til $bruker2 samtidig som du sjekker $bruker. Samme gjelder for passordene.

Lenke til kommentar
$bruker = "Fredrik"; setter først variabelen $bruker til "Fredrik". Deretter endrer du variabelen til å ha verdien "Webmaster". Det kan du løse ved å sette $bruker2 = "Webmaster", og sjekke verdien til $bruker2 samtidig som du sjekker $bruker. Samme gjelder for passordene.

Prøvde men fikk feilmelding, så jeg har antagelig misforstått det du egentlig mente... Kunne du vist meg hvordan koden blir?

 

På forhånd takk!

Lenke til kommentar

Den letteste koden (i ditt tilfelle, forutsatt at du ikke skal ha veldig mange brukere senere) er slik:

 

config.php

<?php

$bruker = "Fredrik";
$bruker2 = "Webmaster";
$pass   = "start";
$pass2   = "john";

?>

 

login_ok.php

<?php
include("config.php");
if($_POST[brukernavn] == ""){
echo"Brukernavnet er ikke skrevet"; // sjekker om brukernavnet er skrevet.
}
if($_POST['passord'] == ""){
echo"Passordet er ikke skrevet"; // sjekker om passord er skrevet.
}
if($_POST['brukernavn'] == $bruker | $_POST['brukernavn'] == $bruker2){ // sjekker om brukernavn passer.

if($_POST['passord'] == $pass | $_POST['passord'] == $pass2){ // sjekker om passord passer.


// bruker vidresendes
header("Location: default.php?brukernavn=$_POST['brukernavn']&passord=$_POST['passord']");
}
}
else {

echo"Du skrev inn feil brukernavn eller passord.";
}
?>

 

Alternativt kan du bruke arrays og f.eks. en foreach-løkke, men hvis du ikke trenger noe særlig mer enn to-tre brukere, er det greit slik det er.

Lenke til kommentar

Hva med noe slikt?

$user_pass[]="Fredrik|||start";
$user_pass[]="Webmaster|||john";

 

Så sjekker du:

<?php
include("config.php");

$user = $_POST['brukernavn'];
$pass = $_POST['passord'];

if(empty($user)){
echo"Brukernavnet er ikke skrevet"; // sjekker om brukernavnet er skrevet.
}
if(empty($pass)){
echo"Passordet er ikke skrevet"; // sjekker om passord er skrevet.
}
if(in_array($user . "|||" . $pass, $user_pass){ // sjekker om brukernavn passer.

// bruker vidresendes
header("Location: default.php?brukernavn=$user&passord=$pass");
}

else {
echo "Du skrev inn feil brukernavn eller passord.";
}
?>

Lenke til kommentar

Tja... er ikke helt sikker på om jeg er enig jorgis. Hvordan vil du da validere brukeren, og hva vil være bedre med det enn måten ZoRaC foreslår?

 

Glem ikke at if($user_pass[$_GET['user']] == $_GET['pass']) vil være true hvis variablene er tomme, så da må det bli sterkere validering av at feltene har en verdi, eventuelt plassere det i en if() - men da er det nesten bedre å behold løsningen til ZoRaC.

Lenke til kommentar

<?php
include("config.php");

$user = $_POST['brukernavn'];
$pass = $_POST['passord'];

if(empty($user)){
die("Brukernavnet er ikke skrevet"); // sjekker om brukernavnet er skrevet.
}
if(empty($pass)){
die("Passordet er ikke skrevet"); // sjekker om passord er skrevet.
}
if($user_pass[$user] == $pass){ // sjekker om brukernavn passer.

// bruker vidresendes
header("Location: default.php?brukernavn=$user&passord=$pass");
}

else {
echo "Du skrev inn feil brukernavn eller passord.";
}
?>

 

config.php:

 

<?php

$user_pass = array("Fredrik" => "start", 
                            "Webmaster" => "John");
?>

 

Kan ikke se noe galt med å gjøre det på denne måten. Legg merke til at die() dreper scriptet hvis passord eller brukernavn er tomme, og da unngår du problemet du snakket om. :)

Lenke til kommentar

Nettopp, da har du lagt til die() - og dette er ofte en kjedelig funksjon med tanke på at de fleste vil ha med en footer på sidene sine også. Med die() så avsluttes scriptet med en gang. Da er det nesten bedre med if() på om feltene er fylt ut.

 

Du må nesten være enig i at ZoRaC leverer en enklere løsning ;)

Hehe... ikke missforstå, jeg har fått med meg at du er en flink programmerer.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...