Avatar billede TiHs Nybegynder
29. juli 2009 - 23:48 Der er 16 kommentarer og
1 løsning

gemme login info i en session til brug i en echo

Hej eksperter,

Jeg har en hjemmeside hvor jeg har sat en session med et login. Denne session bliver så tjekket på alle mine sider.
Jeg har valgt at man logger ind med en email og kodeord.
Kan jeg ikke på en smart måde gemme den email man logger ind med i sessionen for så at bruge den til at blive postet automatisk i en formular i et skjult input felt. Skal bruges til en gæstebog så man bare skriver beskeden og så står der automatisk hvilken email (bruger) der har skrevet beskeden .....
Avatar billede repox Seniormester
29. juli 2009 - 23:50 #1
Hvordan sætter du den session du tjekker om folk er logget ind med?
Avatar billede TiHs Nybegynder
29. juli 2009 - 23:55 #2
Dette er formularen:
<form action="loginsubmit.php" method="POST">
  Email:<br>
  <input type="text" name="email">
  <br>
  Kodeord:<br>
  <input type="password" name="password">
  <br>
  <input name="submit" type="submit" value="Login">
</form>

Og dette er min loginsubmit som tjekker tabellen hvor de i forvejen er oprettet som bruger:

<?php
session_start();

mysql_connect('localhost', 'bruger', 'kode');
mysql_select_db("database");

$email = $_POST[email];
$email = strip_tags($email);
$email = mysql_real_escape_string($email);

$password = $_POST[password];
$password = strip_tags($password);
$password = mysql_real_escape_string($password);

$goback = $_POST[goback];


$tael = mysql_query("SELECT email, password, id FROM brugertabel WHERE email = '$email' AND password = '$password'") or die(mysql_error());
$antal = mysql_num_rows($tael);
if($antal == 1){

$row = mysql_fetch_array($tael);

$_SESSION['loget_innnn'] = $row[1];

header("Location: index.php");

} else {
header('Location: loginfejl.php');
}
?>

Og sådan her tjekker jeg på siderne at sessionen er oprettet:

<?php
session_start();

if ( empty( $_SESSION['loget_innnn'] ))
{
  header( "location: login.php" );
  exit;
}
php?>
Avatar billede tjaz Nybegynder
30. juli 2009 - 00:01 #3
$_SESSION["email"] = $_POST["email"];

echo '<input type="hidden" name="email" value="'. $_SESSION["email"] .'">';

men du behøver nu ikke hente session ind i en input for at kunne bruge den til at "poste" med... du kan jo i din insert til mysql skrive

mysql_query("INSERT INTO table (email, besked) VALUES('". $_SESSION["email"] ."', '". $_POST["besked"] ."')");
Avatar billede repox Seniormester
30. juli 2009 - 00:03 #4
Efter
$_SESSION['loget_innnn'] = $row[1];
i loginsubmit filen skriver du
$_SESSION['email'] = $email;
Avatar billede TiHs Nybegynder
30. juli 2009 - 00:21 #5
Okay,
Så det i skriver er:

.. lav den ekstra linie med $_SESSION['email'] = $email;

og ellers ikke rette på andet end i selve min insert submit til tabellen så den ser ud som følger:

$addbesked =MYSQL_QUERY("INSERT INTO gaestebog (id,date,datetwo,email,news)". "VALUES ('NULL', '$date', '$datetwo', '$_SESSION["email"]', '$news')");

?? ... giver mig:
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /customers/timhs.dk/timhs.dk/httpd.www/familien/submitgaest.php on line 13
Avatar billede repox Seniormester
30. juli 2009 - 00:23 #6
Prøv med:
$addbesked =MYSQL_QUERY("INSERT INTO gaestebog (id,date,datetwo,email,news)". "VALUES ('NULL', '".$date."', '".$datetwo."', '".$_SESSION["email"]."', '".$news."')");

Fejlen ligger i at du ikke får escapet dine quotes korrekt.
Avatar billede TiHs Nybegynder
30. juli 2009 - 00:24 #7
fik løst fejlen med T_STRING ... men den poster ikke email ind i tabellen som er i min session
Avatar billede repox Seniormester
30. juli 2009 - 00:26 #8
Men er du sikker på at emailen er i din session, så?
Avatar billede TiHs Nybegynder
30. juli 2009 - 00:27 #9
Skulle den ikke blive det af følgende linie:

$_SESSION['email'] = $email;  ???
Avatar billede repox Seniormester
30. juli 2009 - 00:29 #10
Istedet for at antage at det må være sådan er det faktisk meget nemmere at kontrollere om det er tilfældet:
var_dump($_SESSION["email"]);
Avatar billede TiHs Nybegynder
30. juli 2009 - 00:31 #11
Giver NULL
Avatar billede repox Seniormester
30. juli 2009 - 00:34 #12
Så er din email ikke deri.
Huskede du at logge ind igen efter du lavede ændringen?
Avatar billede TiHs Nybegynder
30. juli 2009 - 00:39 #13
Ja, jeg sørgede for at der ikke var nogen session ... og loggede så på igen efter ændringen. Hmmm....

Bør det være fint som det er sat op her?:

$email = $_POST[email];
$email = strip_tags($email);
$email = mysql_real_escape_string($email);

$password = $_POST[password];
$password = strip_tags($password);
$password = mysql_real_escape_string($password);

$goback = $_POST[goback];

$tael = mysql_query("SELECT email, password, id FROM phplist_user_user WHERE email = '$email' AND password = '$password'") or die(mysql_error());
$antal = mysql_num_rows($tael);
if($antal == 1){

$row = mysql_fetch_array($tael);
$_SESSION['loget_innnn'] = $row[1];
$_SESSION['email'] = $email;
Avatar billede TiHs Nybegynder
30. juli 2009 - 00:43 #14
Mangler jeg noget i det jeg forsøger at holde en session ?:

<?php
session_start();

if ( empty( $_SESSION['loget_innnn'] ) )
{
  header( "location: login.php" );
  exit;
}
php?>
Avatar billede repox Seniormester
30. juli 2009 - 00:52 #15
Uhm... Det ser sådan set meget rigtigt ud; det er såmænd ikke det...

Hvad får du hvis du skriver
var_dump($_SESSION);
efter du er logget ind?
Avatar billede TiHs Nybegynder
30. juli 2009 - 10:57 #16
Hej Repox, stod op her til morgen og nulstillede alle ændringer fra igår aftes/nat, lavede så ændringerne igen præcis som vi gjorde igår, og nu vil det sku godt virke med e-mail også :o)

Send svar :o)
Avatar billede repox Seniormester
30. juli 2009 - 11:01 #17
Jamen, dent fik du her :)
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