Avatar billede Fiber Bjørn Juniormester
12. juni 2010 - 18:44 Der er 17 kommentarer og
1 løsning

Tjek om e@mail og password passer sammen og gem login info $_SESSION

Jeg har bruger info i en data base = hold
jeg har en person med

id = id nummer
email = Brugerens e@mail
kodeord = password
hold = Hvilket hold han/hun går på

Login funktion via form
<form method="post" action="login.php?action=login">
<input type="text" name="skriv_email" />
<input type="password" name="skriv_kodeord" />
<input type="submit" value="Login" class="blue button" name="login" />
</form>

tjek om skriv_email=email
tjek om skriv_kodeord=kodeord
hvis dette er ok

Gemmes i en SESSION som jeg heller ikke ved hvordan jeg gør
$_SESSION_email=$email
$_SESSION_hold=$hold
$_SESSION_login= "1"

eller sådan noget i den stil.

For at kunne give bruger lov til at se info på det hold han/hun går på

også er det jo det med at det skal være hakke sikker.

Håber der er en der kan hjælpe...
Avatar billede repox Seniormester
12. juni 2010 - 19:02 #1
Har du slet ikke lavet noget selv?
Avatar billede DePlex Nybegynder
12. juni 2010 - 19:45 #2
Hvis du sender mig det du har lavet kan jeg kigge på det.
Avatar billede Fiber Bjørn Juniormester
12. juni 2010 - 19:50 #3
Jo Jeg har prøvet lidt her

$login = $_GET["login"];
$skriv_email = $_GET["skriv_email"];
$skriv_kodeord = $_GET["skriv_kodeord"];


if($_GET[action] == "login"){
if($_POST[skriv_email] == "" || $_POST[skriv_kodeord] == ""){
  echo"Du skal huske at indtaste en E@mail og Kodeord!";
}

else
{  $query = mysql_query("select * from hold where email = '".$skriv_email."'");
$getter = mysql_fetch_array($query);
  echo mysql_error();

$email = $_GET["email"];
$kodeord = $_GET["kodeord"];
$navn = $_GET["navn"];
$hold = $_GET["hold"];

if ($_POST[skriv_email] == "$email" || $_POST[skriv_kodeord] == "$kodeord")
{
  $_SESSION["navn"] = "$navn";
  $_SESSION["email"] = "$email";
  $_SESSION["hold"] = "$holdnavn";
}
else
    {
    echo"Du har instastet forkert e@mail eller kodeord!";
    }

} }

Også prøvet at skrive alle ud her for at se hvor mange her havde noget i sig - hvis man kan sige det :)

<? echo "E@mail - $getter[email]"; ?><br />
<? echo "Navn - $getter[navn]"; ?><br />
<? echo "Kodeord - $getter[kodeord]"; ?><br />
<? echo "Hold - $getter[hold]"; ?><br /><br />
<? echo "Skriv kode - $getter[skriv_kodeord]"; ?><br />
<? echo "Skriv E@mail - $getter[skriv_email]"; ?><br /><br />

Siden kan ses her hvis det kan hjælpe
http://www.dgisydvestgymnastik.dk/indgang.php
Avatar billede repox Seniormester
12. juni 2010 - 19:56 #4
#2
Nu må du holde - det er anden gang nu, du tilbyder at løse opgaverne uden om eksperten.dk; du har ikke engang publiceret dit tidligere løsningsforslag! Du har ret tidligt glemt de brugerbetingelser du accepterede da du oprettede din profil - som du endda allerede en gang er blevet gjort opmærksom på!
Avatar billede Fiber Bjørn Juniormester
12. juni 2010 - 20:02 #5
lige nu vælger den, den sidste hvor hold=repholdet ???
id=157

hvis jeg skriver

E@mail:
steffen@bloch-data.dk

Kodeord:
1234

Det forstår jeg ikke lige helt
Avatar billede DePlex Nybegynder
12. juni 2010 - 20:02 #6
#4
Skulle jeg så skrive flere siders php? Hvis jeg skulle vise ham det hele ville det jo bare gøre det ekstremt uoverskueligt.
Avatar billede repox Seniormester
12. juni 2010 - 20:09 #7
#3
Der er mange ting der ikke stemmer overens i din kode.
Det er noget spaghettikode og den logiske rækkefølge giver ikke så meget mening.

Du sender dine loginoplysninger med POST, men prøver at hente dem ind med $_GET. Det vil ikke virke.

Array indexes skal normalt skrives som $array["index"] (altså med quotes eller dobbelte quotes) og ikke $array[index].

Du har variabler du sætter du aldrig bruger til noget, selvom det er de data du bør anvende...

Det er umuligt at genanvende; du bliver nød til at lave noget nyt:
<?php

  if( isset($_GET["login"]) )
  {
    $email = mysql_real_escape_string($_POST["skriv_email"]);
    $kodeord = mysql_real_escape_string($_POST["skriv_kodeord"]);
   
    $sql = "SELECT * FROM hold WHERE email='".$email."' AND kodeord='".$kodeord."' LIMIT 1";
    $res = mysql_query($sql);
   
    if( mysql_num_rows($res) > 0 )
    {
      $row = mysql_fetch_array($res);
      $_SESSION["email"] = $row["email"];
      $_SESSION["hold"] = $row["hold"];
      $_SESSION["navn"] = $row["navn"];
      echo "Logget ind";
    }
    else
    {
      echo "Forkert brugernavn eller kodeord";
    }
  }

?>


Det er utestet, så der kan være tilrettelser...
Avatar billede repox Seniormester
12. juni 2010 - 20:13 #8
#6
Hvis du skal løse ovenstående problem med 'flere siders kode' er du måske ikke den rigtige til at hjælpe - udover det findes der rigeligt af alternativer for at publicere sin kode (codepad.org og pastebin eksempelvis), hvis man mener at trådmuligheden her ikke skaber det rigtige overblik.

Udover det, så er det din egen opgave at sørge for at opretholde de betingelser du har accepteret. Nu er du relativt ny her - men ved at gennemgå nogle spørgsmål og svar her, bør du hurtigt kunne gennemskue den almene form for kommunikation på Eksperten.dk.
Avatar billede Fiber Bjørn Juniormester
12. juni 2010 - 20:29 #9
det er lige som om at der ikke sker noget

      echo "Logget ind";

      echo "Forkert brugernavn eller kodeord";

Vises ikke engang
Avatar billede Fiber Bjørn Juniormester
12. juni 2010 - 20:37 #10
#8 #9

Jeg kan bare ikke lige se hvad det kan få det til at gå i stå så ikke bare en af dem bliver udskrevet.

repox: Jeg vil da lige sige hvis dette kommer til at virke med så lidt kode er du godt nok redningsmanden. Jeg har sat hele dagen for prøve at finde en løsning men er slet ikke kommet til en. Og som du nok kan se er jeg lidt på dybt vand...
Avatar billede repox Seniormester
12. juni 2010 - 20:39 #11
Vis mig lige hele indgang.php som den er nu; du kan eventuelt smide kode ind på http://codepad.org og så sende URL'en...
Avatar billede Fiber Bjørn Juniormester
12. juni 2010 - 21:41 #12
her har jeg sat hele kode ind, altså hele indgang.php
http://codepad.org/DyAkoJDZ

her er linket til hvor filen ligge på hjemmesiden
http://www.dgisydvestgymnastik.dk/indgang.php
Avatar billede repox Seniormester
12. juni 2010 - 21:49 #13
Det er også fordi jeg lavede en tanketorsk; prøv at skifte
if( isset($_GET["login"]) )

ud med
if( isset($_GET["action"]) && $_GET["action"] == "login" )


Men jeg ville nok flytte login delen ned, hvor du forsøger at skrive logindataene ud, så du kan se det der bliver skrevet ud...
Avatar billede Fiber Bjørn Juniormester
12. juni 2010 - 22:02 #14
Det ser ud til at virke :)

Hvordan printer eller echo jeg

      $_SESSION["email"] = $row["email"];
      $_SESSION["hold"] = $row["hold"];
      $_SESSION["navn"] = $row["navn"];
Avatar billede repox Seniormester
12. juni 2010 - 22:05 #15
Med echo?
echo $_SESSION["email"];
Avatar billede Fiber Bjørn Juniormester
12. juni 2010 - 22:20 #16
Jeg kan godt få den til at ECHO her

    if( mysql_num_rows($res) > 0 )
    {
      $row = mysql_fetch_array($res);
      $_SESSION["email"] = $row["email"];
      $_SESSION["hold"] = $row["hold"];
      $_SESSION["navn"] = $row["navn"];
        echo "Logget ind";
        echo $_SESSION["email"];
        echo $_SESSION["hold"];
        echo $_SESSION["navn"];

Men ikke ude på siden, sådan her

<? echo $_SESSION["email"]; ?><br /><br />
<? echo $_SESSION["hold"]; ?><br /><br />
<? echo $_SESSION["navn"]; ?><br /><br />

Men en ting er sikker, du får dobbelt 5 tal af mig
Smid et svar og du får point prompte :)
1000 tak for hjælpe
Avatar billede repox Seniormester
12. juni 2010 - 22:23 #17
Du skal huske at starte dine sessioner med session_start(); som det allerførste på alle dine sider, for at sessions virker?
Avatar billede Fiber Bjørn Juniormester
12. juni 2010 - 22:31 #18
Ja ja så lærte jeg godt nok og meget i dag :)

Den færdige kode kom til at se sådan ud

<?
session_start();
require("config.php");
connect();

  if( isset($_GET["action"]) && $_GET["action"] == "login" )
  {
    $email = mysql_real_escape_string($_POST["skriv_email"]);
    $kodeord = mysql_real_escape_string($_POST["skriv_kodeord"]);
   
    if($_POST[skriv_email] == "" || $_POST[skriv_kodeord] == ""){
  echo"Du har ikke indtastet noget i et af felterne!";
}
else {
      $sql = "SELECT * FROM hold WHERE email='".$email."' AND kodeord='".$kodeord."' LIMIT 1";
    $res = mysql_query($sql);
   
    if( mysql_num_rows($res) > 0 )
    {
      $row = mysql_fetch_array($res);
      $_SESSION["email"] = $row["email"];
      $_SESSION["hold"] = $row["hold"];
      $_SESSION["navn"] = $row["navn"];
        echo "Logget ind";
    }
    else
    {
      echo "Forkert brugernavn eller kodeord";
    }
  }}

?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester