Omeka S Scripto - Login Broken

I have added the code you have provided into the ApiClient.php file, have tried to log in, and it how now returned this:
“array(1) { [“clientlogin”]=> array(2) { [“status”]=> string(4) “PASS” [“username”]=> string(9) “Rich test” } }”

I have just been reminded by a friend that helped me originally with the initial Scripto installation, he did change something surrounding the MediaWiki Endpoint API setup, as it was trying to reference a HTTPS address rather than a HTTP address (as the website doesn’t have an ssl certificate). I don’t know if this provides any useful context… but I thought it might be good to mention just in case.

It appears that you are successfully logging into MediaWiki, but the subsequent requests aren’t handled as if you are logged in.

Let’s troubleshoot the other possibility. You can check if Scripto carries over the cookies by dumping the them after you’ve logged on. In the same file, add the following:

public function __construct(HttpClient $httpClient, $apiUrl, $timeZone)
{
    // ...
    var_dump($this->httpClient->getCookies());exit; // <-- Add this line
}

About running MediaWiki API over HTTP: it should be fine since MediaWiki still supports it.

I have added your code as follows:

public function __construct(HttpClient $httpClient, $apiUrl, $timeZone)
    {
        $this->httpClient = $httpClient;
        $this->apiUrl = $apiUrl;
        $this->timeZone = $timeZone;

        // Retrieve persisted MediaWiki cookies and add them to the HTTP client.
        $this->session = new Container('ScriptoMediawiki');
        if (is_array($this->session->cookies)) {
            foreach ($this->session->cookies as $cookie) {
                $this->httpClient->addCookie($cookie);
              
        var_dump($this->httpClient->getCookies());exit;
            }
        }
    }

And it has returned the message:

array(1) { ["clientlogin"]=> array(2) { ["status"]=> string(4) "PASS" ["username"]=> string(9) "Rich test" } }

Good to know that this HTTPS issue is not the reason. Thank you for your continued efforts Jim!!

That doesn’t look right. It looks like you’re still dumping the clientlogin response.

I also tried troubleshooting with ChatGPT which advised me to input the line into the end of the ‘__construct’ method which I have now done:

public function __construct(HttpClient $httpClient, $apiUrl, $timeZone)
    {
        $this->httpClient = $httpClient;
        $this->apiUrl = $apiUrl;
        $this->timeZone = $timeZone;

        // Retrieve persisted MediaWiki cookies and add them to the HTTP client.
        $this->session = new Container('ScriptoMediawiki');
        if (is_array($this->session->cookies)) {
            foreach ($this->session->cookies as $cookie) {
                $this->httpClient->addCookie($cookie);
              
            }
        }
      
      var_dump($this->httpClient->getCookies());exit;
    }

This now returns the message when I try to navigate to Scripto:

array(0) { }

without letting me even get to the Scripto main page to login, which was possible before. I hope this makes sense to you.

Somehow the MediaWiki cookies are not being passed to the session. First let’s see if they’re set during login. In ApiClient::login() add the following line immediately before the return:

var_dump($this->session->cookies);exit;

Log in to Scripto and what do you see? If you see anything other than cookie data, then MediaWiki isn’t passing cookies to Scripto’s HTTP client.

Now, let’s see if the session contains the cookies after logging in. Log into Scripto, and then in ApiClient::__construct() add the following line immediately before the return:

var_dump($this->session->cookies);exit;

Refresh the page and what do you see? If you see anything other than cookie data, the session is failing to store cookies for some reason. If so, have you customized your Omeka S session configuration in any way?

I have added this first line of code before the return and it now displays the message:

NULL

I guess this means that the cookie data is not being stored. I have not purposefully made any edits to the Omeka S configuration that I think would affect the way that Scripto functions in regard to cookies. But, is there a specific place that I can look at further to provide you with more insight into this?

To clarify, you got a NULL after adding the code to ApiClient::login() or ApiClient::__construct()?

ApiClient::__construct()

The function is as follows:

public function __construct(HttpClient $httpClient, $apiUrl, $timeZone)
    {
        $this->httpClient = $httpClient;
        $this->apiUrl = $apiUrl;
        $this->timeZone = $timeZone;

        // Retrieve persisted MediaWiki cookies and add them to the HTTP client.
        $this->session = new Container('ScriptoMediawiki');
        if (is_array($this->session->cookies)) {
            foreach ($this->session->cookies as $cookie) {
                $this->httpClient->addCookie($cookie);
            }
        }
      var_dump($this->session->cookies);exit;
    }

Did you manage to dump the session data in ApiClient::login() as instructed here?

I did indeed, the ApiClient::login() appears as so:

    public function login($username, $password)
    {
        $query = $this->request([
            'action' => 'query',
            'meta' => 'tokens',
            'type' => 'login',
        ]);
        $clientlogin = $this->request([
            'action' => 'clientlogin',
            'loginreturnurl' => 'http://example.com/', // currently unused but required
            'logintoken' => $query['query']['tokens']['logintoken'],
            'username' => $username,
            'password' => $password,
            'rememberMe' => true,
        ]);
      	var_dump($clientlogin);exit;
        if (isset($clientlogin['error'])) {
            throw new Exception\ClientloginException($clientlogin['error']['info']);
        }
        if ('FAIL' === $clientlogin['clientlogin']['status']) {
            throw new Exception\ClientloginException($clientlogin['clientlogin']['message']);
        }
        // Persist the authentication cookies.
        $this->session->cookies = $this->httpClient->getCookies();
        // Set user information.
        $this->userInfo = null;
        $this->userInfo = $this->queryUserInfo();
      	var_dump($this->session->cookies);exit;
        return $clientlogin['clientlogin'];
    }

For total coverage, I can also provide you with the entire file. Please let me know if this is preferable. Again, as always, THANK YOU Jim!!

Please remove the var_dump($clientlogin);exit; in the middle of that method and try again.

I’ve followed your instructions, and it now states:
array(5) { ["plantsandpeople_dk_db_session/"]=> object(Laminas\Http\Header\SetCookie)#402 (13) { ["name":protected]=> string(29) "plantsandpeople_dk_db_session" ["value":protected]=> string(32) "4tgv5otrnl57q96sc2dcm8s622eil86k" ["version":protected]=> NULL ["maxAge":protected]=> NULL ["expires":protected]=> NULL ["domain":protected]=> NULL ["path":protected]=> string(1) "/" ["secure":protected]=> bool(false) ["quoteFieldValue":protected]=> bool(false) ["httponly":protected]=> bool(true) ["sameSite":protected]=> NULL ["encodeValue":protected]=> bool(false) ["type"]=> string(6) "Cookie" } ["UseDC/"]=> object(Laminas\Http\Header\SetCookie)#403 (13) { ["name":protected]=> string(5) "UseDC" ["value":protected]=> string(6) "master" ["version":protected]=> NULL ["maxAge":protected]=> int(10) ["expires":protected]=> int(1711047451) ["domain":protected]=> NULL ["path":protected]=> string(1) "/" ["secure":protected]=> bool(false) ["quoteFieldValue":protected]=> bool(false) ["httponly":protected]=> bool(true) ["sameSite":protected]=> NULL ["encodeValue":protected]=> bool(false) ["type"]=> string(6) "Cookie" } ["plantsandpeople_dk_dbUserID/"]=> object(Laminas\Http\Header\SetCookie)#434 (13) { ["name":protected]=> string(27) "plantsandpeople_dk_dbUserID" ["value":protected]=> string(1) "5" ["version":protected]=> NULL ["maxAge":protected]=> int(15552000) ["expires":protected]=> int(1726599441) ["domain":protected]=> NULL ["path":protected]=> string(1) "/" ["secure":protected]=> bool(false) ["quoteFieldValue":protected]=> bool(false) ["httponly":protected]=> bool(true) ["sameSite":protected]=> NULL ["encodeValue":protected]=> bool(false) ["type"]=> string(6) "Cookie" } ["plantsandpeople_dk_dbUserName/"]=> object(Laminas\Http\Header\SetCookie)#435 (13) { ["name":protected]=> string(29) "plantsandpeople_dk_dbUserName" ["value":protected]=> string(9) "Rich test" ["version":protected]=> NULL ["maxAge":protected]=> int(15552000) ["expires":protected]=> int(1726599441) ["domain":protected]=> NULL ["path":protected]=> string(1) "/" ["secure":protected]=> bool(false) ["quoteFieldValue":protected]=> bool(false) ["httponly":protected]=> bool(true) ["sameSite":protected]=> NULL ["encodeValue":protected]=> bool(true) ["type"]=> string(6) "Cookie" } ["plantsandpeople_dk_dbToken/"]=> object(Laminas\Http\Header\SetCookie)#438 (13) { ["name":protected]=> string(26) "plantsandpeople_dk_dbToken" ["value":protected]=> string(32) "07376af1bb4f9c72b323da8af0ecc1c7" ["version":protected]=> NULL ["maxAge":protected]=> int(15552000) ["expires":protected]=> int(1726599441) ["domain":protected]=> NULL ["path":protected]=> string(1) "/" ["secure":protected]=> bool(false) ["quoteFieldValue":protected]=> bool(false) ["httponly":protected]=> bool(true) ["sameSite":protected]=> NULL ["encodeValue":protected]=> bool(false) ["type"]=> string(6) "Cookie" } }

Dear Jim, I apologise for bothering you again.

Is there anything that can be worked out from the following session data?:
array(5) { [“plantsandpeople_dk_db_session/”]=> object(Laminas\Http\Header\SetCookie)#402 (13) { [“name”:protected]=> string(29) “plantsandpeople_dk_db_session” [“value”:protected]=> string(32) “4tgv5otrnl57q96sc2dcm8s622eil86k” [“version”:protected]=> NULL [“maxAge”:protected]=> NULL [“expires”:protected]=> NULL [“domain”:protected]=> NULL [“path”:protected]=> string(1) “/” [“secure”:protected]=> bool(false) [“quoteFieldValue”:protected]=> bool(false) [“httponly”:protected]=> bool(true) [“sameSite”:protected]=> NULL [“encodeValue”:protected]=> bool(false) [“type”]=> string(6) “Cookie” } [“UseDC/”]=> object(Laminas\Http\Header\SetCookie)#403 (13) { [“name”:protected]=> string(5) “UseDC” [“value”:protected]=> string(6) “master” [“version”:protected]=> NULL [“maxAge”:protected]=> int(10) [“expires”:protected]=> int(1711047451) [“domain”:protected]=> NULL [“path”:protected]=> string(1) “/” [“secure”:protected]=> bool(false) [“quoteFieldValue”:protected]=> bool(false) [“httponly”:protected]=> bool(true) [“sameSite”:protected]=> NULL [“encodeValue”:protected]=> bool(false) [“type”]=> string(6) “Cookie” } [“plantsandpeople_dk_dbUserID/”]=> object(Laminas\Http\Header\SetCookie)#434 (13) { [“name”:protected]=> string(27) “plantsandpeople_dk_dbUserID” [“value”:protected]=> string(1) “5” [“version”:protected]=> NULL [“maxAge”:protected]=> int(15552000) [“expires”:protected]=> int(1726599441) [“domain”:protected]=> NULL [“path”:protected]=> string(1) “/” [“secure”:protected]=> bool(false) [“quoteFieldValue”:protected]=> bool(false) [“httponly”:protected]=> bool(true) [“sameSite”:protected]=> NULL [“encodeValue”:protected]=> bool(false) [“type”]=> string(6) “Cookie” } [“plantsandpeople_dk_dbUserName/”]=> object(Laminas\Http\Header\SetCookie)#435 (13) { [“name”:protected]=> string(29) “plantsandpeople_dk_dbUserName” [“value”:protected]=> string(9) “Rich test” [“version”:protected]=> NULL [“maxAge”:protected]=> int(15552000) [“expires”:protected]=> int(1726599441) [“domain”:protected]=> NULL [“path”:protected]=> string(1) “/” [“secure”:protected]=> bool(false) [“quoteFieldValue”:protected]=> bool(false) [“httponly”:protected]=> bool(true) [“sameSite”:protected]=> NULL [“encodeValue”:protected]=> bool(true) [“type”]=> string(6) “Cookie” } [“plantsandpeople_dk_dbToken/”]=> object(Laminas\Http\Header\SetCookie)#438 (13) { [“name”:protected]=> string(26) “plantsandpeople_dk_dbToken” [“value”:protected]=> string(32) “07376af1bb4f9c72b323da8af0ecc1c7” [“version”:protected]=> NULL [“maxAge”:protected]=> int(15552000) [“expires”:protected]=> int(1726599441) [“domain”:protected]=> NULL [“path”:protected]=> string(1) “/” [“secure”:protected]=> bool(false) [“quoteFieldValue”:protected]=> bool(false) [“httponly”:protected]=> bool(true) [“sameSite”:protected]=> NULL [“encodeValue”:protected]=> bool(false) [“type”]=> string(6) “Cookie” } }

Thanks for responding with this info; we’ll get back to you when we’ve had a chance to look it over.

Apologies for the delay. I was on holiday with my family.

Let’s review. From what I can deduce from your debugging, upon login, MediaWiki is returning a successful login response as well as well-formed login cookies. This is why you’re seeing the “Successfully logged into Scripto” message.

That’s great. But, somehow, the login cookies aren’t persisting across requests. Scripto sets the cookies to the session and expects them to be there during subsequent requests, but they’re not set anymore. This is why the user interface is showing that you’re not logged in.

I would suspect that the session is not working, but then logging into Omeka itself would be impossible. I suppose it could be something in your specific environment, such as a namespace conflict within the session? I’m stumped. I’ll look into this further and get back to you.

Let’s try a few more things.

First, log out of the Omeka administrative interface. Can you log back in? I suspect you can, but I want to confirm that your session isn’t broken in some unusual way.

Next, log into Scrpto, then add the following line to the end of ApiClient::__construct(), making sure you’ve removed all other debugging lines you’ve previously added:

var_dump($_SESSION['ScriptoMediawiki']);exit;

Refresh the page and copy the results here.

Dear Jim, No worries at all for the delays, I hope you’ve had a wonderful holiday with your family!

Here is the results of the var_dump($_SESSION['ScriptoMediawiki']);exit;:

object(Laminas\Stdlib\ArrayObject)#401 (4) { [“storage”:protected]=> array(1) { [“cookies”]=> array(5) { [“plantsandpeople_dk_db_session/”]=> object(Laminas\Http\Header\SetCookie)#402 (13) { [“name”:protected]=> string(29) “plantsandpeople_dk_db_session” [“value”:protected]=> string(32) “a7jd3klhuu8iht8cmbcb309uofvooe43” [“version”:protected]=> NULL [“maxAge”:protected]=> NULL [“expires”:protected]=> NULL [“domain”:protected]=> NULL [“path”:protected]=> string(1) “/” [“secure”:protected]=> bool(false) [“quoteFieldValue”:protected]=> bool(false) [“httponly”:protected]=> bool(true) [“sameSite”:protected]=> NULL [“encodeValue”:protected]=> bool(false) [“type”]=> string(6) “Cookie” } [“UseDC/”]=> object(Laminas\Http\Header\SetCookie)#403 (13) { [“name”:protected]=> string(5) “UseDC” [“value”:protected]=> string(6) “master” [“version”:protected]=> NULL [“maxAge”:protected]=> int(10) [“expires”:protected]=> int(1711652753) [“domain”:protected]=> NULL [“path”:protected]=> string(1) “/” [“secure”:protected]=> bool(false) [“quoteFieldValue”:protected]=> bool(false) [“httponly”:protected]=> bool(true) [“sameSite”:protected]=> NULL [“encodeValue”:protected]=> bool(false) [“type”]=> string(6) “Cookie” } [“plantsandpeople_dk_dbUserID/”]=> object(Laminas\Http\Header\SetCookie)#404 (13) { [“name”:protected]=> string(27) “plantsandpeople_dk_dbUserID” [“value”:protected]=> string(1) “5” [“version”:protected]=> NULL [“maxAge”:protected]=> int(15552000) [“expires”:protected]=> int(1727204743) [“domain”:protected]=> NULL [“path”:protected]=> string(1) “/” [“secure”:protected]=> bool(false) [“quoteFieldValue”:protected]=> bool(false) [“httponly”:protected]=> bool(true) [“sameSite”:protected]=> NULL [“encodeValue”:protected]=> bool(false) [“type”]=> string(6) “Cookie” } [“plantsandpeople_dk_dbUserName/”]=> object(Laminas\Http\Header\SetCookie)#435 (13) { [“name”:protected]=> string(29) “plantsandpeople_dk_dbUserName” [“value”:protected]=> string(9) “Rich test” [“version”:protected]=> NULL [“maxAge”:protected]=> int(15552000) [“expires”:protected]=> int(1727204743) [“domain”:protected]=> NULL [“path”:protected]=> string(1) “/” [“secure”:protected]=> bool(false) [“quoteFieldValue”:protected]=> bool(false) [“httponly”:protected]=> bool(true) [“sameSite”:protected]=> NULL [“encodeValue”:protected]=> bool(true) [“type”]=> string(6) “Cookie” } [“plantsandpeople_dk_dbToken/”]=> object(Laminas\Http\Header\SetCookie)#436 (13) { [“name”:protected]=> string(26) “plantsandpeople_dk_dbToken” [“value”:protected]=> string(32) “07376af1bb4f9c72b323da8af0ecc1c7” [“version”:protected]=> NULL [“maxAge”:protected]=> int(15552000) [“expires”:protected]=> int(1727204743) [“domain”:protected]=> NULL [“path”:protected]=> string(1) “/” [“secure”:protected]=> bool(false) [“quoteFieldValue”:protected]=> bool(false) [“httponly”:protected]=> bool(true) [“sameSite”:protected]=> NULL [“encodeValue”:protected]=> bool(false) [“type”]=> string(6) “Cookie” } } } [“flag”:protected]=> int(2) [“iteratorClass”:protected]=> string(13) “ArrayIterator” [“protectedProperties”:protected]=> array(4) { [0]=> string(7) “storage” [1]=> string(4) “flag” [2]=> string(13) “iteratorClass” [3]=> string(19) “protectedProperties” } }

That’s interesting. Evidently, the MediaWiki cookies are persisting in the $_SESSION superglobal, but we determined above that the cookies are NULL when fetched via the Laminas session container.

To rule out a mistake in our troubleshooting, try this: log into Scrpto, remove all debugging lines you’ve previously added, and add the following lines to the end of ApiClient::__construct():

echo '<pre>';
var_dump($_SESSION['ScriptoMediawiki']['cookies']);
var_dump($this->session->cookies);
exit;

Refresh the page and copy the results here.

Here is the new output! Thank you for being so thorough!:

array(5) {
[“plantsandpeople_dk_db_session/”]=>
object(Laminas\Http\Header\SetCookie)#402 (13) {
[“name”:protected]=>
string(29) “plantsandpeople_dk_db_session”
[“value”:protected]=>
string(32) “ec7jhm1ui3r7u9a6fg3khub6qkqei31m”
[“version”:protected]=>
NULL
[“maxAge”:protected]=>
NULL
[“expires”:protected]=>
NULL
[“domain”:protected]=>
NULL
[“path”:protected]=>
string(1) “/”
[“secure”:protected]=>
bool(false)
[“quoteFieldValue”:protected]=>
bool(false)
[“httponly”:protected]=>
bool(true)
[“sameSite”:protected]=>
NULL
[“encodeValue”:protected]=>
bool(false)
[“type”]=>
string(6) “Cookie”
}
[“plantsandpeople_dk_dbUserName/”]=>
object(Laminas\Http\Header\SetCookie)#403 (13) {
[“name”:protected]=>
string(29) “plantsandpeople_dk_dbUserName”
[“value”:protected]=>
string(9) “Rich test”
[“version”:protected]=>
NULL
[“maxAge”:protected]=>
int(15552000)
[“expires”:protected]=>
int(1727208679)
[“domain”:protected]=>
NULL
[“path”:protected]=>
string(1) “/”
[“secure”:protected]=>
bool(false)
[“quoteFieldValue”:protected]=>
bool(false)
[“httponly”:protected]=>
bool(true)
[“sameSite”:protected]=>
NULL
[“encodeValue”:protected]=>
bool(true)
[“type”]=>
string(6) “Cookie”
}
[“UseDC/”]=>
object(Laminas\Http\Header\SetCookie)#404 (13) {
[“name”:protected]=>
string(5) “UseDC”
[“value”:protected]=>
string(6) “master”
[“version”:protected]=>
NULL
[“maxAge”:protected]=>
int(10)
[“expires”:protected]=>
int(1711656689)
[“domain”:protected]=>
NULL
[“path”:protected]=>
string(1) “/”
[“secure”:protected]=>
bool(false)
[“quoteFieldValue”:protected]=>
bool(false)
[“httponly”:protected]=>
bool(true)
[“sameSite”:protected]=>
NULL
[“encodeValue”:protected]=>
bool(false)
[“type”]=>
string(6) “Cookie”
}
[“plantsandpeople_dk_dbUserID/”]=>
object(Laminas\Http\Header\SetCookie)#435 (13) {
[“name”:protected]=>
string(27) “plantsandpeople_dk_dbUserID”
[“value”:protected]=>
string(1) “5”
[“version”:protected]=>
NULL
[“maxAge”:protected]=>
int(15552000)
[“expires”:protected]=>
int(1727208679)
[“domain”:protected]=>
NULL
[“path”:protected]=>
string(1) “/”
[“secure”:protected]=>
bool(false)
[“quoteFieldValue”:protected]=>
bool(false)
[“httponly”:protected]=>
bool(true)
[“sameSite”:protected]=>
NULL
[“encodeValue”:protected]=>
bool(false)
[“type”]=>
string(6) “Cookie”
}
[“plantsandpeople_dk_dbToken/”]=>
object(Laminas\Http\Header\SetCookie)#436 (13) {
[“name”:protected]=>
string(26) “plantsandpeople_dk_dbToken”
[“value”:protected]=>
string(32) “07376af1bb4f9c72b323da8af0ecc1c7”
[“version”:protected]=>
NULL
[“maxAge”:protected]=>
int(15552000)
[“expires”:protected]=>
int(1727208679)
[“domain”:protected]=>
NULL
[“path”:protected]=>
string(1) “/”
[“secure”:protected]=>
bool(false)
[“quoteFieldValue”:protected]=>
bool(false)
[“httponly”:protected]=>
bool(true)
[“sameSite”:protected]=>
NULL
[“encodeValue”:protected]=>
bool(false)
[“type”]=>
string(6) “Cookie”
}
}
array(5) {
[“plantsandpeople_dk_db_session/”]=>
object(Laminas\Http\Header\SetCookie)#402 (13) {
[“name”:protected]=>
string(29) “plantsandpeople_dk_db_session”
[“value”:protected]=>
string(32) “ec7jhm1ui3r7u9a6fg3khub6qkqei31m”
[“version”:protected]=>
NULL
[“maxAge”:protected]=>
NULL
[“expires”:protected]=>
NULL
[“domain”:protected]=>
NULL
[“path”:protected]=>
string(1) “/”
[“secure”:protected]=>
bool(false)
[“quoteFieldValue”:protected]=>
bool(false)
[“httponly”:protected]=>
bool(true)
[“sameSite”:protected]=>
NULL
[“encodeValue”:protected]=>
bool(false)
[“type”]=>
string(6) “Cookie”
}
[“plantsandpeople_dk_dbUserName/”]=>
object(Laminas\Http\Header\SetCookie)#403 (13) {
[“name”:protected]=>
string(29) “plantsandpeople_dk_dbUserName”
[“value”:protected]=>
string(9) “Rich test”
[“version”:protected]=>
NULL
[“maxAge”:protected]=>
int(15552000)
[“expires”:protected]=>
int(1727208679)
[“domain”:protected]=>
NULL
[“path”:protected]=>
string(1) “/”
[“secure”:protected]=>
bool(false)
[“quoteFieldValue”:protected]=>
bool(false)
[“httponly”:protected]=>
bool(true)
[“sameSite”:protected]=>
NULL
[“encodeValue”:protected]=>
bool(true)
[“type”]=>
string(6) “Cookie”
}
[“UseDC/”]=>
object(Laminas\Http\Header\SetCookie)#404 (13) {
[“name”:protected]=>
string(5) “UseDC”
[“value”:protected]=>
string(6) “master”
[“version”:protected]=>
NULL
[“maxAge”:protected]=>
int(10)
[“expires”:protected]=>
int(1711656689)
[“domain”:protected]=>
NULL
[“path”:protected]=>
string(1) “/”
[“secure”:protected]=>
bool(false)
[“quoteFieldValue”:protected]=>
bool(false)
[“httponly”:protected]=>
bool(true)
[“sameSite”:protected]=>
NULL
[“encodeValue”:protected]=>
bool(false)
[“type”]=>
string(6) “Cookie”
}
[“plantsandpeople_dk_dbUserID/”]=>
object(Laminas\Http\Header\SetCookie)#435 (13) {
[“name”:protected]=>
string(27) “plantsandpeople_dk_dbUserID”
[“value”:protected]=>
string(1) “5”
[“version”:protected]=>
NULL
[“maxAge”:protected]=>
int(15552000)
[“expires”:protected]=>
int(1727208679)
[“domain”:protected]=>
NULL
[“path”:protected]=>
string(1) “/”
[“secure”:protected]=>
bool(false)
[“quoteFieldValue”:protected]=>
bool(false)
[“httponly”:protected]=>
bool(true)
[“sameSite”:protected]=>
NULL
[“encodeValue”:protected]=>
bool(false)
[“type”]=>
string(6) “Cookie”
}
[“plantsandpeople_dk_dbToken/”]=>
object(Laminas\Http\Header\SetCookie)#436 (13) {
[“name”:protected]=>
string(26) “plantsandpeople_dk_dbToken”
[“value”:protected]=>
string(32) “07376af1bb4f9c72b323da8af0ecc1c7”
[“version”:protected]=>
NULL
[“maxAge”:protected]=>
int(15552000)
[“expires”:protected]=>
int(1727208679)
[“domain”:protected]=>
NULL
[“path”:protected]=>
string(1) “/”
[“secure”:protected]=>
bool(false)
[“quoteFieldValue”:protected]=>
bool(false)
[“httponly”:protected]=>
bool(true)
[“sameSite”:protected]=>
NULL
[“encodeValue”:protected]=>
bool(false)
[“type”]=>
string(6) “Cookie”
}
}