webForumDet fria alternativet

Hämta användarnamnet från session?

PHP

4 svar · 1 014 visningar · startad av Akerlundh

Medlem sedan maj 20031 682 inlägg
Frågan#1

Hejsan. Är inte så super haj på PHP men använder ett login script ifrån GitHub. Dock så kommer jag inte på hur jag ska hämta ut användarnamnet.

Skriver jag t.ex.

<?php echo "." . $_SESSION["username"] . "."; ?>

Då skriver den ut .myusername. istället för användarnamnet.

Dock så antar jag att det är denna koden som bestämmer att användarnamnet ska visas som .myusername. i sesssionen.

<?php
ob_start();
session_start();
include_once 'config.php';
require 'scripts/class.loginscript.php';

// Define $myusername and $mypassword
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];

// To protect MySQL injection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);

// Connect to server and select databse.
$login = new loginForm;
$response = $login->checkLogin($tbl_name, $myusername, $mypassword);

	if ($response == 'true'){
		echo "true";
		$_SESSION['username'] = 'myusername';
		$_SESSION['password'] = 'mypassword';
	}
	else {

		echo $response;

	}

ob_end_flush();
?>

Ni hittar hela scriptet här https://github.com/therecluse26/PHP-Login

Medlem sedan jan. 2005953 inlägg
#2
$_SESSION['username'] = 'myusername';

Där sätts värdet på sessionsvariabeln till myusername. Ändra detta till

$_SESSION['username'] = $myusername;

Några synpunkter:

  • Lösenordet ser jag ingen anledning att spara i en sessionsvariabel.
  • Jag tror att metoden checkLogin returnerar ett booleskt värde (true/false) istället för en sträng ('true'/'false'). Du bör då också använda booleska värden i din jämförelse för att PHP ska slippa göra en typomvandling.

Och till sist:
Om du skriver

<?php echo "." . $_SESSION["username"] . "."; ?>

så kommer det att skrivas ut en punkt före och efter användarnamnet, men det kanske du vill?

Medlem sedan maj 20031 682 inlägg
#3

Som sagt är inte så duktig på PHP. Ändrade koden där jag vill hämta sessionen till

<?php echo  $_SESSION["username"]  ;?>

Så nu sliper jag punkterna.

Men den skriver fortfarande ut myusername ändrade ändå koden i checklogin.php som du skrev.

Medlem sedan jan. 2005953 inlägg
#4

Hmm... tittade igenom koden på github som du länkade till. Metoden returnerar faktiskt strängen 'true', så det ska inte vara true som jag skrev tidigare. Men för mig är det ett väldigt konstigt sätt att koda :)

Prova att ändra tillbaka till

 if ($response == 'true'){ 
        echo "true"; 
        $_SESSION['username'] = $myusername; 
        $_SESSION['password'] = 'mypassword'; 
    }
Medlem sedan maj 20031 682 inlägg
#5

Toppen! Tack för hjälpen :)

255 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)