Gå til innhold

Spørsmål om login-script


Anbefalte innlegg

Jeg holder på å lage et login-script som bare skal loggen in noen dersom feltet uid er tomt. Jeg kommer liksom ikke lenger enn dette:

 

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

echo <<< end

<form action='$regScript' method='$formMethod'>
<p>Brukernavn:   <input name='brukernavn' type='text' size='20'>
<p>Passord:   <input name='pass' type='passord' size='20'>
<p><input name='send' type='submit' value='Login'>
</form>
 
end;

$brukernavn = $_POST['brukernavn']
$pass = $_POST['pass']

if ($_POST['send'] == $_POST['Login']){

mysql_connect($mySQLhost, $mySQLuser, $mySQLpass)
       or die("Could not connect: " . mysql_error());
mysql_select_db($mySQLdb);

mysql_query("SELECT passord FROM users WHERE !uid AND brukernavn = '$brukernavn'")
}
?>

 

 

Noen som kan være så snill å hjlpe meg med å gjøre det ferdig?

Lenke til kommentar
Videoannonse
Annonse

sånn, nå er jeg kommet litt lengre:

 

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

echo <<< end

<form action='$regScript' method='$formMethod'>
<p>Brukernavn:   <input name='brukernavn' type='text' size='20'>
<p>Passord:   <input name='pass' type='passord' size='20'>
<p><input name='send' type='submit' value='Login'>
</form>
 
end;

$brukernavn = $_POST['brukernavn']
$pass = $_POST['pass']
$pass = md5($pass);

if ($_POST['send'] == 'Login'){

mysql_connect($mySQLhost, $mySQLuser, $mySQLpass)
       or die("Could not connect: " . mysql_error());
mysql_select_db($mySQLdb);

$q =("SELECT passord FROM users WHERE uid='' AND brukernavn = '$brukernavn'");
$resultat = mysql_query($q);
$sjekk = mysql_fetch_array($resultat); 

if ()
?>

 

Hvordan fortsetter jeg?

Endret av Tha_Zaynt
Lenke til kommentar

hvorfor fungerer ikke dette?:

 

login.php

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

echo <<< end

<form action='$regScript' method='$formMethod'>
<p>Brukernavn:   <input name='brukernavn' type='text' size='20'>
<p>Passord:   <input name='pass' type='password' size='20'>
<p><input name='send' type='submit' value='Login'>
</form>
 
end;

$brukernavn = $_POST['brukernavn'];
$pass = $_POST['pass'];
$pass = md5($pass);

if ($_POST['send'] == 'Login'){

mysql_connect($mySQLhost, $mySQLuser, $mySQLpass)
       or die("Could not connect: " . mysql_error());
mysql_select_db($mySQLdb);

$q =("SELECT passord FROM users WHERE uid='' AND brukernavn = '$brukernavn'");
$resultat = mysql_query($q);
$sjekk = mysql_fetch_array($resultat); 

if ($sjekk == $pass){
$_SESSION['$brukernavn'] = true;
header("Location: minside.php?brukernavn=$brukernavn"); }

else {
echo "<p>Sikker på at du skrev inn riktig brukernavn og $pass?</p>";
}
}
?>

 

 

minside.php

<?php 
session_start():
$brukernavn = $_GET['brukernavn'];
if ($_SESSION['$brukernavn'] = true;){
echo "Du er logget inn!";
}
?>

Lenke til kommentar

Du har en noen feil i scriptet ditt.

 

I login.php kan du godt bruke mySQL til å sjekke passordet:

 

SELECT passord FROM users WHERE uid='' AND brukernavn = '$brukernavn' AND passord = '$pass'

 

men grunnen til at det ikke virker er vel at du bruker tilordning i if setningen i minside.php:

 

<?php 
session_start():
$brukernavn = $_GET['brukernavn'];
if ($_SESSION['$brukernavn'] = true;){
echo "Du er logget inn!";
}
?>

 

bør være:

 

<?php 
session_start():
$brukernavn = $_GET['brukernavn'];
if ($_SESSION['$brukernavn'] == true) {
echo "Du er logget inn!";
}
?>

 

Du kunne også skrevet:

<?php 
session_start():
$brukernavn = $_GET['brukernavn'];
if ($_SESSION['$brukernavn']) {
echo "Du er logget inn!";
}
?>

 

Er det med vilje at du bruker $_SESSION['$brukernavn']? I og med at du bruker ' (singlequotes) blir $brukernavn feltnavnet i $_SESSION arrayet og ikke innholdet i variabelen $brukernavn.

Lenke til kommentar

huff og huff..dette baller jo bare på seg..nå får jeg denne erroren :

 

 

Warning: Cannot modify header information - headers already sent by (output started at /hsphere/local/home/sjurvaag/nisselink.sjurvaage.com/login.php:14) in /hsphere/local/home/sjurvaag/nisselink.sjurvaage.com/login.php on line 31

 

login.php

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

echo <<< end

<form action='$regScript' method='$formMethod'>
<p>Brukernavn:   <input name='brukernavn' type='text' size='20'>
<p>Passord:   <input name='pass' type='password' size='20'>
<p><input name='send' type='submit' value='Login'>
</form>
 
end;

$brukernavn = $_POST['brukernavn'];
$pass = $_POST['pass'];
$pass = md5($pass);

if ($_POST['send'] == 'Login'){

mysql_connect($mySQLhost, $mySQLuser, $mySQLpass)
       or die("Could not connect: " . mysql_error());
mysql_select_db($mySQLdb);

$q =("SELECT passord FROM users WHERE uid='' AND brukernavn = '$brukernavn'");
$resultat = mysql_query($q);
$sjekk = mysql_fetch_array($resultat); 

if ($sjekk[passord] == $pass) {
$_SESSION["$brukernavn"] = true;
header("Location: minside.php?brukernavn=$brukernavn"); }

else {
echo "<p>Sikker på at du skrev inn riktig brukernavn og $pass?</p>";
}
}
?>

 

Er det noe jeg kan gjøre med det, eller kan jeg rett og slett ikke bruke header(location:x);?

Lenke til kommentar

headers må settes før det skrives noe ut i det hele tatt...

 

Flytt if-blokka til starten av scriptet:

<?php
session_start();
include("config.php");
if ($_POST['send'] == 'Login'){
$brukernavn = $_POST['brukernavn'];
$pass = $_POST['pass'];
$pass = md5($pass);
mysql_connect($mySQLhost, $mySQLuser, $mySQLpass)
      or die("Could not connect: " . mysql_error());
mysql_select_db($mySQLdb);

$q =("SELECT passord FROM users WHERE uid='' AND brukernavn = '$brukernavn'");
$resultat = mysql_query($q);
$sjekk = mysql_fetch_array($resultat); 

if ($sjekk[passord] == $pass) {
$_SESSION["$brukernavn"] = true;
header("Location: minside.php?brukernavn=$brukernavn"); }

else {
echo "<p>Sikker på at du skrev inn riktig brukernavn og $pass?</p>";
}
}

echo <<< end

<form action='$regScript' method='$formMethod'>
<p>Brukernavn:   <input name='brukernavn' type='text' size='20'>
<p>Passord:   <input name='pass' type='password' size='20'>
<p><input name='send' type='submit' value='Login'>
</form>

end;
?>

Dette skal fungere, med mindre du inkluderer denne login siden i en annen side, som skriver ut noe før header... Da kan du bare sende dataen til en annen side, f.eks. sjekk_login.php. som kun inneholder if blokken, også blir man sendt videre til en side med header(location:...) dersom brukernavn og passord er feil, og til en annen dersom det er rett...

 

/Kakkle

Lenke til kommentar

Jeg vil gjerne lage login-scriptet slik at det kommer opp en feilmelding hvis feltet uid ikke er tom..Jeg har prøvd meg litt frem, men det funker ikke..

 

slik ser det ut nå :

 

login.php

 

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

$brukernavn = $_POST['brukernavn'];
$pass = $_POST['pass'];
$pass = md5($pass);

if ($_POST['send'] == 'Login'){

if (empty($brukernavn) || empty($pass)){
echo"Du glemte å skrive inn:";

if(!$brukernavn){
echo "<p>brukernavn</p>";
}

if(!$pass){
echo "<p>passord</p>";
}

else{


mysql_connect($mySQLhost, $mySQLuser, $mySQLpass)
       or die("Could not connect: " . mysql_error());
mysql_select_db($mySQLdb);


$q =("SELECT uid FROM users WHERE brukernavn = '$brukernavn'");
$resultat = mysql_query($q);
$sjekk = mysql_fetch_array($resultat);

if (!$sjekk){
$sjekk = true;
}

else {
$sjekk = false;
}

if ($sjekk == false){
echo"Enten har du ikke registrert deg enda, ellers er ikke kontoen din aktivert. For å aktivere kontoen din må du trykke på aktiverinslinken du fikk i mailen når du registrerte deg.";
}

if ($sjekk == true){
$query =("SELECT passord FROM users WHERE AND brukernavn = '$brukernavn'");
$resultatet = mysql_query($query);
$sjekken = mysql_fetch_array($resultat);

if ($sjekken == $pass){
$_SESSION["$brukernavn"] = true;
header("Location: minside.php?brukernavn=$brukernavn");
}

}
}
}
}
echo <<< end

<form action='$regScript' method='$formMethod'>
<p>Brukernavn: <input name='brukernavn' type='text' size='20'>
<br>Passord:       <input name='pass' type='password' size='20'>
<br><input name='send' type='submit' value='Login'></br>
</form>

end;

?>

Lenke til kommentar

$q =("SELECT uid FROM users WHERE brukernavn = '$brukernavn'");
$resultat = mysql_query($q);
$row = mysql_fetch_array($resultat);
$uid = $row["uid"];
if (!$uid){
$sjekk = true;
}

else {
$sjekk = false;
}

istedet for:

$q =("SELECT uid FROM users WHERE brukernavn = '$brukernavn'");
$resultat = mysql_query($q);
$sjekk = mysql_fetch_array($resultat);

if (!$sjekk){
$sjekk = true;
}

else {
$sjekk = false;
}

Lenke til kommentar

Du må se på if blokkene... slutter de der de skal slutte ? Virker nesten som om du bare har satt mange } helt på slutten for å få vekk feilmeldinger...

Hvis du ser på denne if setmningen:

if (empty($brukernavn) || empty($pass)){

så slutter den helt på slutten... Det vil si at det inne i if blokken kun blir utført dersom brukernavn eller passord ikke er fylt ut, og det er vel ikke helt meningen.

Regner med at du vil ha slutten på denne if'en etter dette:

if(!$pass){
echo "<p>passord</p>";
}

 

edit: skrivefeil

/Kakkle

Endret av kakkle
Lenke til kommentar

ahh...så det nå. Tror det skal funke nå..Jeg får feilmelding hvis kontoen ikke er aktivert enda, men får ikke erroren "sikker på at du har skrevet inn riktig brukernavn og passord?"

 

Edit: Ikke så rart...jeg har ikke med den feilmeldingen her...skal legge den til å se om det funker.

 

Edit2: Er ikke helt sikker på hvor jeg skal legge til denne feilmeldingen...noen som har peiling?

 

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

$brukernavn = $_POST['brukernavn'];
$pass = $_POST['pass'];
$pass = md5($pass);

if ($_POST['send'] == 'Login'){

if (empty($brukernavn) || empty($pass)){
echo"Du glemte å skrive inn:";

if(!$brukernavn){
echo "<p>brukernavn</p>";
}

if(!$pass){
echo "<p>passord</p>";
}
}

else{

mysql_connect($mySQLhost, $mySQLuser, $mySQLpass)
      or die("Could not connect: " . mysql_error());
mysql_select_db($mySQLdb);


$q =("SELECT uid FROM users WHERE brukernavn = '$brukernavn'");
$resultat = mysql_query($q);
$row = mysql_fetch_array($resultat);
$uid = $row["uid"];
if (!$uid){
$sjekk = true;
}

else {
$sjekk = false;
}

if ($sjekk == false){
echo"Kontoen din er ikke aktivert enda. For å aktivere kontoen din må du trykke på aktiverinslinken du fikk i mailen når du registrerte deg.";
}

if ($sjekk == true){
$query =("SELECT passord FROM users WHERE AND brukernavn = '$brukernavn'");
$resultatet = mysql_query($query);
$sjekken = mysql_fetch_array($resultat);

if ($sjekken == $pass){
$_SESSION["$brukernavn"] = true;
header("Location: minside.php?brukernavn=$brukernavn");

}
}
}
}
echo <<< end

<form action='$regScript' method='$formMethod'>
<p>Brukernavn: <input name='brukernavn' type='text' size='20'>
<br>Passord:       <input name='pass' type='password' size='20'>
<br><input name='send' type='submit' value='Login'></br>
</form>

end;

?>

Endret av Tha_Zaynt
Lenke til kommentar

Jezus! Frankenstein's PHP monster!

 

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

$link = mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect: " . mysql_error());
mysql_select_db($mySQLdb);

$brukernavn = $_POST['brukernavn'];
$pass =  md5($_POST['pass']);

if ($_POST['send'] == 'Login'){

 $q =("SELECT uid, passord FROM users WHERE brukernavn = '$brukernavn'");
 $row = mysql_fetch_array(mysql_query($q));

 if ( ($row['passord'] == $pass) and ($row['uid']) ) {

    $_SESSION["user"] = $brukernavn;
    header("Location: minside.php"); # Bruk session. (sjekk $_SESSION["user"];)

 } else { echo "Feil brukernavn/passord, eller kontoen din er ikke aktivert."; }

} else {

echo <<< end
<html><head><title>Innlogging</title></head><body>
<form action='$regScript' method='$formMethod'>
<p>Brukernavn: <input name='brukernavn' type='text' size='20'>
<br>Passord:       <input name='pass' type='password' size='20'>
<br><input name='send' type='submit' value='Login'></br>
</form>
</body></html>
end;

}

mysql_close($link);
?>

 

Slik... Er en stund siden jeg jobbet med PHP nå.. kan være feil ute og går

Endret av Terrasque
Lenke til kommentar
Du kunne også skrevet:

<?php 
session_start():
$brukernavn = $_GET['brukernavn'];
if ($_SESSION['$brukernavn']) {
echo "Du er logget inn!";
}
?>

 

Er det med vilje at du bruker $_SESSION['$brukernavn']? I og med at du bruker ' (singlequotes) blir $brukernavn feltnavnet i $_SESSION arrayet og ikke innholdet i variabelen $brukernavn.

å i det hele tatt ha en variabel som key i $_SESSION har jeg vanskelig å se loggikken i.

Lenke til kommentar

jeg endret litt på koden, men det virker som $_SESSION["$brukernavn"] ikke blir satt fordi når jeg blir redirecta til minside.php, men den godtar ikke sessionen....Noen som har peil på hva som kan være galt?

 

login.php

 if  ($row['passord'] == $pass and $row['uid'] == "") {

   $_SESSION["$brukernavn"];

   header("Location: minside.php?brukernavn=$brukernavn"); 

 

minside.php

<?php
session_start();
$brukernavn = $_GET['brukernavn'];

if ($_SESSION["$brukernavn"]){
echo"Du er logget inn!"; 
}
else{
include("login.php");
echo"<p>Du må logge inn for å få tilgang til din brukerprofil!</p>";
}
?>

Lenke til kommentar

Er det ikke bedre å gi $_SESSION vedrien til $brukernavn, da ?:

login.php

if  ($row['passord'] == $pass and $row['uid'] == "") {

  $_SESSION["brukernavn"]=$brukernavn;

  header("Location: minside.php?brukernavn=$brukernavn");

minside.php:

<?php
session_start();
$brukernavn = $_GET['brukernavn'];

if ($_SESSION["brukernavn"] == $brukernavn){
echo"Du er logget inn!";
}
else{
include("login.php");
echo"<p>Du må logge inn for å få tilgang til din brukerprofil!</p>";
}
?>

KAn evt i minside.php bruke:

<?php
session_start();

if (isset($_SESSION["brukernavn"])){ // Denne vil kun være satt dersom riktige ting er ok i scriptet login.php
echo"Du er logget inn!";
}
else{
include("login.php");
echo"<p>Du må logge inn for å få tilgang til din brukerprofil!</p>";
}
?>

Du kan da fjerne "halen" urlen i header i login.php scriptet.

 

/KMS

Lenke til kommentar
jeg endret litt på koden, men det virker som $_SESSION["$brukernavn"] ikke blir satt fordi når jeg blir redirecta til minside.php, men den godtar ikke sessionen....Noen som har peil på hva som kan være galt?

 

login.php

 if  ($row['passord'] == $pass and $row['uid'] == "") {

   $_SESSION["$brukernavn"];

   header("Location: minside.php?brukernavn=$brukernavn"); 

 

minside.php

<?php
session_start();
$brukernavn = $_GET['brukernavn'];

if ($_SESSION["$brukernavn"]){
echo"Du er logget inn!"; 
}
else{
include("login.php");
echo"<p>Du må logge inn for å få tilgang til din brukerprofil!</p>";
}
?>

Sukk.. Du har misforstått kraftig session, ser jeg. ("Jeg drar og drar i håndbrekket, men bilen VIL ikke starte!")

 

Tenk på session som variabler som blir bundet til brukeren og går fra side til side.

 

$bruker = "Brukernavn" <-- Vanlig setting av variabel bruker.

 

$_SESSION["bruker"] = "Brukernavn" <--- Setting av session variabel bruker.

 

$_SESSION["$brukernavn"]; <-- Totalt menigsløst. Først, $brukernavn blir byttet ut med innholdet i $brukernavn.

Så det kan bli $_SESSION["Terra"]; eller $_SESSION["Zaynt"]; eller hva som helst, avhengig av hva brukeren logger seg inn som.

 

Og hva i alle dager blir den session variablen satt til? Den blir ikke satt i det hele tatt. Den blir lest, men du gjør ikke noe med den eventuelle verdien som er i den variablen.

 

Du trenger ikke unike session variabler for hver bruker, siden en session er bundet til brukeren, og ikke siden. (å ha ulik variabel for hver ville også gjort session veldig upraktisk)

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...