Een tijd geleden heb ik een gedeelte van de website overgezet naar een veilige SSL locatie, namelijk (https://paneel.domein.nl) en ik heb deze geinstalleerd als apart domein op een aparte user op DirectAdmin.

Een aparte user en apart domein voor de veiligheid en om de mogelijkheid te hebben om de user en het (sub)domein apart te kunnen verplaatsen naar een andere server.

Zo ziet het er dus uit op dit moment.
1. website http (http://www.domein.nl) user1 on DA.
2. subdomein https (https://paneel.domein.nl) user2 on DA.

Nu heb ik al een hoop geprobeerd om het volgende in orde te krijgen, maar het wil maar niet lukken. Het probleem is dat als iemand inlogged vanaf http of https (maakt niet uit) dan zal men via de veilige login.php (welke op https staat) ingelogged worden. Daarbij veranderd het login scherm op https netjes in de opties welke alleen beschikbaar zijn als men ingelogged is.

Maar nu het probleem. Wanneer men al ingelogged is en terug gaat naar het http gedeelte dan is het login vak zichtbaar en niet de opties voor iemand die ingelogged is. Dus de sessie wordt niet gezien of gaat verloren. Men blijft blijkbaar wel ingelogged, want als je naar https weer gaat zonder in te loggen dan ben je nog steeds ingelogged.

Ik wil graag dat als men terug gaat naar het http gedeelte dat het login vak ook blijft staan op de opties voor iemand die ingelogged is, zoals overview / my information.

Ik heb een hoop geprobeerd met cookies etc en uiteindelijk kom ik uit op de code die ik nu gebruik en daarvan heb ik het idee dat ik dicht bij de oplossing zit, maar helaas werkt het nog niet.

Als ik de cookies in de browser check dan zie ik wel paneel.domein.nl en www.domein.nl, maar beiden hebben verschillende session id's.

Dit is mijn huidige code:

Login.php HTTPS pagina

    <?php
    // regenerate session id to make session fixation more difficult
    session_regenerate_id(true);

    // generate random code for the authentication cookie and store it in the session
    $authCode = md5(uniqid(mt_rand(), true));
    $_SESSION['authentication'] = $authCode;

    // create authentication cookie, and restrict it to HTTPS pages
    setcookie('authentication', $authCode, 0, '/', '', true, true);
    ?>

    <form method="post" action="https://paneel.domein.nl/login">
    <table>
    <tr>
    <td><input type="text" name="email" /></td>
    </tr>
    <tr>
    <td><input type="password" name="password"  /></td>
    </tr>
    <tr>
    <td><input type="submit" name="login" value="login" /></td>
    </tr>
    </table>
    </form>


Index.php HTTP pagina met login form en links/opties na het inloggen

    <?php
    // check that the authentication cookie exists, and that
    // it contains the same code which is stored in the session.
    $pageIsSecure = (!empty($_COOKIE['authentication']))
    && ($_COOKIE['authentication'] === $_SESSION['authentication']);

    if (!$pageIsSecure)
    {

// laat de opties niet zien, maar redirect naar login form

    <form method="post" action="https://paneel.domein.nl/login">
    <table>
    <tr>
    <td><input type="text" name="email" /></td>
    </tr>
    <tr>
    <td><input type="password" name="password"  /></td>
    </tr>
    <tr>
    <td><input type="submit" name="login" value="login" /></td>
    </tr>
    </table>
    </form>

// else via php, laat de opties zien na het inloggen on http

    <?php }else{ ?>	

    <li><a href=" https://paneel.domein.nl/overview">Overview</a></li>
    <li><a href=" https://paneel.domein.nl/my-information">My Information</a></li>

    <?php } ?>
Sessions verschillen per subdomain.
@santhe ja dat maakt niks uit?

Je kunt via htacces opgeven waar een sessie heen geschreven moet worden, als beide domeinen op dezelfde server staan zet je de sessie gewoon in een map waar beide domeinen toegang tot hebben. Zo kun je de sessie van de ene domein uitlezen door het andere domein.
Metal Hertog Jan op 04/01/2014 17:53:48

@santhe ja dat maakt niks uit?

Je kunt via htacces opgeven waar een sessie heen geschreven moet worden, als beide domeinen op dezelfde server staan zet je de sessie gewoon in een map waar beide domeinen toegang tot hebben. Zo kun je de sessie van de ene domein uitlezen door het andere domein.


Oke, het gaat mij alleen erom dat het login menu op HTTP zichtbaar is na een login ipv het login form.

Hoe kan ik dit dan fixen met .htaccess file? En hoe zorg ik ervoor dat beide domeinen access hebben tot 1 folder terwijl het om 2 verschillende users gaat.

Reageren