Avatar billede rampagezz Nybegynder
16. december 2012 - 11:26 Der er 16 kommentarer og
1 løsning

hjælp til session

Hej eksperter

Kan ikke lige greje denne.

Igår fandt jeg noget _SESSION kode og tilpassede det min side.
Der virkede det også.
Idag strikkede jeg noget cookie funktion på. Det virkede ikke helt efter hensigten, så jeg fjernede den igen.
Men nu virker _SESSION heller ikke.
Eller i hvert fald ikke i IE. Men i Firefox gør den.

Kode:

<?php
session_start();

$host = "localhost";
$db = "test";
$user = "*****";
$pass = "*****";

mysql_connect($host, $user, $pass);
mysql_select_db($db);

if (isset($_POST['username'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    $sql = "SELECT * FROM uppsala_users WHERE username='".$username."' AND password='".$password."' LIMIT 1";
    $res = mysql_query($sql);
    if (mysql_num_rows($res) == 1) {
        $_SESSION['CurrentUser'] = $username;
        header('Location:index2.php');
    }
}

?>

Login formen ligger på samme side.

Kan nogen se problemet?

- Rampagezz
Avatar billede rampagezz Nybegynder
16. december 2012 - 11:32 #1
Jeg smider lige loginformen også:

<table width="314" border="0" align="center" cellpadding="4" cellspacing="0">
 
  <tr>
    <td height="40" colspan="2" bgcolor="#CCCC66">Login:</td>
  </tr>
  <form method="post" action="">
  <tr>
    <td width="118" class="undertitel">Username:</td>
    <td width="180" bgcolor="#CCCC66"><input type="text" name="username"></td>
  </tr>
  <tr>
    <td class="undertitel">Password:</td>
    <td bgcolor="#CCCC66"><input type="password" name="password"></td>
  </tr>
  <tr>
    <td height="40" colspan="2" bgcolor="#CCCC66">
      <input type="submit" name="logon" value="Log på">
    </td>
  </tr>
  </form>
</table>

Jeg er lige på farten. Er hjemme i aften..
Avatar billede olebole Juniormester
16. december 2012 - 14:35 #2
<ole>

Hvis det virker i Firefox, men ikke i IE, må det skyldes en indstilling i IE. Mon ikke, du har fået slået cookies fra i IE?

/mvh
</bole>
Avatar billede tobrukDk Novice
16. december 2012 - 15:45 #3
Husk nu hvis du laver cookie så skal du lige læse omkring regler til det hvis du skal angive det ??
Avatar billede rampagezz Nybegynder
16. december 2012 - 22:54 #4
LOL. At jeg ikke selv tænkte på det. :-)
Anyway...

Kan stadig ikke få cookies til at virke...

Ole -> Dit indlæg besvarer mit spørgsmål, så du har pointene.

Men kan du hurtigt lure hvad problemet er ved dette.
Den vil ikke huske login.
Jeg har rettet det ind fra en anden kode, så det passede ind på siden.
Kan ikke finde fejlen. :-/
Avatar billede olebole Juniormester
16. december 2012 - 23:08 #5
Et gæt kunne være, at du glemmer session_start() på den side, du tester på(?)
Avatar billede rampagezz Nybegynder
17. december 2012 - 01:53 #6
Jeg har dette stykke kode i starten på alle mine sider:
<?php
session_start();
if(isset($_SESSION['CurrentUser'])){
$current_user = $_SESSION['CurrentUser'];
?>

og her er index.php med "huskmig" funktion (cookie):

<?php
session_start();

if ( $_POST['huskmig']==1 && empty($_COOKIE['myusername']))
{
  // husker cookies i 100 dage
  setcookie  ( "myusername" , $_POST['username'] , time() + 60*60*24*100);
  setcookie  ( "mypassword" , $_POST['password'] , time() + 60*60*24*100);
}

$host = "localhost";
$db = "test";
$user = "*****";
$pass = "*****";

mysql_connect($host, $user, $pass);
mysql_select_db($db);

if(isset($_COOKIE['username']))
{
    $username=$_COOKIE['myusername'];
    $password=$_COOKIE['mypassword'];

    if (isset($_POST['username'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    $sql = "SELECT * FROM uppsala_users WHERE username='".$username."' AND password='".$password."' LIMIT 1";
    $res = mysql_query($sql);
        if (mysql_num_rows($res) == 1) {
        $_SESSION['CurrentUser'] = $username;
        header('Location:index2.php');

        }
    }
}
?>

Checkboxen i loginformen stemmer også overens med navnet på kaldet.
Avatar billede olebole Juniormester
17. december 2012 - 03:10 #7
Den side, som sætter cookie'en, kan ikke læse den. Kun når/hvis siden reloades, eller der navigeres til en anden side, kan kagen læses.

Når det er sagt, så er login via cookies generelt en usikker affære. At gemme brugernavn og password i en cookie, holder slet ikke. Tænk på, at en cookie er en tekstfil på brugerens PC, hvor data står i klartekst. Udveksling af cookies mellem klient og server foregår ligeledes i klartekst.

Vil man lave login med cookie, skal man kunne skrive pivsikker kode. Hvis jeg skal råde, dropper du cookie tingen, og bruger tiden på at lære noget mere relevant.

For det første bør du droppe MySQL og i stedet bruge prepared statements under PDO eller MySQLI. Du bør også søge på hashing af passwords, når de skal gemmes i en database. Google er din ven  =)
Avatar billede tobrukDk Novice
17. december 2012 - 06:28 #8
#6 Olebole er ikke glad for du bruger det gammel mysql..

Du skulle nok overvejr at gå over til mysqli som du kan læse her:

http://www.eksperten.dk/guide/1480
Avatar billede rampagezz Nybegynder
17. december 2012 - 07:40 #9
Ok. Det skal lige siges, at det kun er en privat side og password er det samme for alle indtil videre 8 brugere i foreningen. Det er bare for at brugeren er logget ind og at det er nemmere at hente den indloggede, når de skal skrive i eks. forum osv.

Så egentlig burde password være fjernet så det kun er brugernavn. Password er der kun for at andre udefra har sværere ved at komme ind på siden.

Jeg burde have nævnt det i spørgsmålet.

Anyway.. Kom med et svar.
Avatar billede olebole Juniormester
17. december 2012 - 17:12 #10
Det er såmænd ikke mig, der ikke kan lide det. De, der oprindelig har skrevet MySQL-API'et, fraråder det på det kraftigste.

Der er ikke noget, der gør det nævneværdigt 'sværere' at komme ind. Du har skrevet en vidt åben ladeport.

Men ja, en anden gang bør du nok nævne, at det ikke er et seriøst spørgsmål. Så kan folk vælge, om de gider bruge tid på det  =)
Avatar billede tobrukDk Novice
17. december 2012 - 17:38 #11
#10 der vil jeg give olebole ret. der er altså nogle af os som sidder og arbejder med programmering hver dag og kigger på kode hver dag. så det vil være super stor hjælp hvis du sagde det med det samme og fremvise din kode også! altså give også så meget infomation som muligt da vi bedre stillet kan hjælpe dig måske videre :)
Avatar billede rampagezz Nybegynder
17. december 2012 - 18:11 #12
Hmm. Jeg synes da ellers jeg gav den kode der var relavant for spørgsmålet.
Og mht. til Oles udmelding, så vil jeg lige sige at den skam er seriøs.

Jeg prøver faktisk at lave en side til vores forening, hvor der er et simpelt login og at det var nemmere at hente frem hvilken bruger der er logget ind.

Men hvis i ikke mener at det er godt nok at bruge tid på, så fred være med det..!
Avatar billede olebole Juniormester
17. december 2012 - 18:42 #13
Nej, det er komplet useriøst! Det er ligeså serøst, som hvis du efterlyser en opskrift på forloren skildpadde - og det senere viser sig, du er rystende ligeglad med, hvordan det smager. Det er der ingen serøse udviklere, der gider spilde tid på.

Eksperten er først og fremmest ment som en vidensdatabase, man kan søge i, når man har IT-relaterede problemer. Så er det overordentlig vigtigt, at alle kan se, der er tale om en ubrugelig skodløsning - eller om der tale om noget, andre kan bruge.
Avatar billede tobrukDk Novice
17. december 2012 - 19:02 #14
#13 vi kan også bare sig at man lave en opgave til skole men jeg gider ikke lave den helt færdig fordi jeg "ikke har" lyst så jeg da bare vide af min lærer at det er noget lort det som jeg har lavet!.
Avatar billede rampagezz Nybegynder
17. december 2012 - 21:01 #15
Hvad er det for noget fis at fyre af. LOL
Men lad mig flette det i neon og skære det i pap. Jeg skrev #9 for at i kunne prøve at forstå at det er mindre betydningsfuldt at der er et password, men at det er der for at gøre det mere udfordrende (for nogle) at komme ind på siden.

Jeg opretter sku da ikke indlægget for sjov.
Avatar billede rampagezz Nybegynder
17. december 2012 - 21:04 #16
Jeg har selv fundet løsningen. Og password er fjernet, så man kun skal skrive sit navn.
Ole-> Hvis du gerne vil have de point, så skriv svar.
Avatar billede rampagezz Nybegynder
11. august 2014 - 02:12 #17
lukker
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