Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Php login form

Skapad av tok124, 2014-06-22 11:37 i Webbutveckling & Programmering

2 548
8 inlägg
0 poäng
tok124
Visningsbild
P 34 Hjälte 258 inlägg
0
Hej, Jag håller just nu på med en php login form men jag har stött på lite problem.

Jag hittade en php function här http://www.phpeasystep.com/workshopview.php?id=6 som jag använder. Jag har bytt ut vissa saker som session_register och session_is_registered eftersom att dom inte längre funkar.

När jag loggar in på ifrån min login form så kommer jag till mitt script som heter checklogin.php och då har jag gjort så de ska visa mitt användarnamn från databasen om jag är inloggad och de funkar. Så om jag loggar in med ett account som heter typ "test" så står de typ test på checklogin sidan så den selectar från databasen och inga error visas.

Problemet är att jag vill visa de på en annan sida också. Den sidan heter testing.php och om jag kör include 'checklogin.php';
så står de

Notice: Undefined index: username in C:xampphtdocs esdwadachecklogin.php on line 7

och

Notice: Undefined index: password in C:xampphtdocs esdwadachecklogin.php on line 8

så de kan inte visas på min testsida men de kan bara visas på checklogin.php.

Här är lite links till scripten jag har:
checklogin.php -> http://pastebin.com/8wDeDfQe
testing.php -> http://pastebin.com/DkHtjySc
en del av mitt index script -> http://pastebin.com/2wCDdkbv

och som jag sa tidigare så visas mitt användarnamn på checklogin.php och om jag går till logout.php och går tillbaka så visas inte mitt användarnamn så allt funkar perfekt i checklogin.php men när jag inkluderar checklogin.php i en annan fil så fungerar de inte att skriva typ echo "$username";

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

SkalmanOnDrugs
Visningsbild
P 34 Göteborg Hjälte 2 758 inlägg
0
Svar till tok124 [Gå till post]:
Detta felmeddelande:

Notice: Undefined index: username in C:xampphtdocs esdwadachecklogin.php on line 7

Den hittar inte 'username'- eller 'password-variabeln i arrayen för POST-data eftersom checklogin.php är gjord så att den hämtar användarnamn och lösenord från ett HTTP-POST anrop, dvs det måste vara en request från en form eller liknande.

En lösning är att wrappa hela logiken i checklogin.php i en funktion typ:

function testLogin($userName, $password){
// do stuff here
}

Så när du gör en "vanlig login" så anropar du denna funktionen och skickar in $_POST['username'] och $_POST['password'] och när du vill inkludera scriptet på en annan sida så gör du likadant fast skickar in hårdkodade variabler eller vad du nu vill. Hoppas du förstod vad jag mena :)

Läs på lite om OO-php. Det mest "korrekta" är att skapa ett objekt av typen checklogin och anropa

checklogin->authenticate($username, $password)

Du måste konstruera ytterligare pyloner

tok124
Visningsbild
P 34 Hjälte 258 inlägg
Trådskapare
0

Svar till SkalmanOnDrugs [Gå till post]:
förstår lite av de du sa men hur anroppar jag den funktionen? Ska även läsa på lite om OO-php

Klas-Kenny
Visningsbild
P 30 Växjö Hjälte 12 128 inlägg
0
Du använder grejerna lite fel.

Kolla på just rad 7 och 8 i checklogin.php, den kollar efter POST-variabler, vilka du inte skickar till den.

När du kört checklogin.php första gången så sparas användarnamnet och lösenordet (varför i helsike man nu får för sig att spara lösenordet också!?) i sessionsvariabler, så du kommer åt den med $_SESSION['username'] och $_SESSION['password'] ifrån alla dina filer utan att behöva inkludera checklogin.

Tillägg av Klas-Kenny 2014-06-22 12:15

För övrigt, lägg ingen energi på att försöka förstå OO just nu. Det är rätt så krångligt att lära sig och göra på ett bra sätt, börja med att lära dig grunderna ordentligt först, sen kan du sätta dig in i OO och göra saker och ting på det mest korrekta sättet, men det är inget man måste göra om man inte har väldigt stora sidor eller så.

Rätt verktyg till rätt arbete - Makaroner äts med sked.

SkalmanOnDrugs
Visningsbild
P 34 Göteborg Hjälte 2 758 inlägg
0
Svar till tok124 [Gå till post]:
Här är ett exempel på hur man skapar objekt och anropar de i php.

LoginManager.php
http://pastebin.com/0E6GGTd8

Hur man anropar och använder LoginManager.php
http://pastebin.com/NkqV928N

Hoppas det hjälpte :)



Svar till Klas-Kenny [Gå till post]:
Äh, så svårt är det inte ^^ Och det är lika bra att lära sig direkt så man kan få till lite snyggare lösningar :)

Du måste konstruera ytterligare pyloner

tok124
Visningsbild
P 34 Hjälte 258 inlägg
Trådskapare
0

Svar till Klas-Kenny [Gå till post]:
Ah jag förstog inte riktigt häller varför lösenordet ska sparas i variabeln men asså om jag inte includerar checklogin.php och bara skriver
Ett stycke php-kod:
<?php
if(!isset($_SESSION['username'])){
echo "Not Working $username";
}else{
echo "Working $username";
}
?>

i min index så står det "Notice: Undefined variable: username in C:xampphtdocs esdwadaindex.php on line 65"

Så de funkar inte då häller
tok124
Visningsbild
P 34 Hjälte 258 inlägg
Trådskapare
0

Svar till SkalmanOnDrugs [Gå till post]:
Tack, Ska testa lite med det :)

tok124
Visningsbild
P 34 Hjälte 258 inlägg
Trådskapare
0
Tänkte bara säga att problemet är löst, Hittade ett script här http://www.cramerz.com/php/php_login_system som fungerar perfekt. De är dessutom med SHA1 Encryption och de behövde jag endå så de var ju skönt att jag lyckades hitta det :)

Forum » Datorer & IT » Webbutveckling & Programmering » Php login form

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons