Page 1 of 1

Protected page met database

Posted: Mon May 11, 2020 3:28 pm
by marloes
Ik heb aan de website van ons koor o.a. een mededelingen pagina toegevoegd (deze staat nog niet online). Ik heb een administrator pagina gemaakt waarmee de mededelingenpagina bewerkt kan worden, dus de pagina werkt met een database. Maar op de mededelingenpagina gaat het mis bij het laden van de inhoud van de database. Ik krijg de volgende foutmelding: "Notice: session_start(): A session had already been started - ignoring .....". En daarna volgen twee database waarschuwingen.
De mededelingen pagina is een protected page. Er moet dus voor worden ingelogd. Er moet echter ook een sessie gestart worden voor inloggen op de database waar de inhoud van de pagina vandaan moet komen. Deze twee sessies lijken elkaar in de weg te zitten. Hoe los ik dat op?

Re: Protected page met database

Posted: Mon May 11, 2020 4:11 pm
by Pablo
Heb je geprobeerd de tweede session_start() te verwijderen?

Ik kan helaas geen ondersteuning op eigen code kan geven.

Re: Protected page met database

Posted: Mon May 11, 2020 9:28 pm
by marloes
Dat snap ik, maar het is geen eigen code :); ik heb de cms en login plugins van het programma gebruikt . Ik heb wel in de code gekeken om te zien wat er in de regel stond waar de foutmelding over ging. Maar weet dus niet zo goed hoe ik het op moet lossen.

Re: Protected page met database

Posted: Tue May 12, 2020 5:54 am
by Pablo
Het is lastig je hierbij te help zonder exact te zien wat je hebt gedaan.
Wat zijn je instellingen?
Wat is de gegenereerde PHP code?

Re: Protected page met database

Posted: Tue May 12, 2020 12:22 pm
by marloes
Welke instellingen wil je precies weten?

De php code van de mededelingen pagina begint met:

Code: Select all

 if (session_id() == "")
{
   session_start();
}
if (!isset($_SESSION['username']))
{
   $_SESSION['referrer'] = $_SERVER['REQUEST_URI'];
   header('Location: ');
   exit;
}
if (isset($_SESSION['expires_by']))
{
   $expires_by = intval($_SESSION['expires_by']);
   if (time() < $expires_by)
   {
      $_SESSION['expires_by'] = time() + intval($_SESSION['expires_timeout']);
   }
   else
   {
      unset($_SESSION['username']);
      unset($_SESSION['expires_by']);
      unset($_SESSION['expires_timeout']);
      $_SESSION['referrer'] = $_SERVER['REQUEST_URI'];
      header('Location: ');
      exit;
   }
}
session_start();
define('MAIN_SCRIPT', basename(__FILE__));
function fireEvent($event_name, $id)
{
   global $events;
   if (isset($events[$event_name]))
   {
      foreach($events[$event_name] as $fn)
      {
         $fn($id);
      }
   } 
}
$mysql_server = 'localhost';
$mysql_username = '***';
$mysql_password = '***';
$mysql_database = '***_mededelingen';
$mysql_table = 'cms_';
$cms_no_results = 'No results';
$cms_content = '';
$cms_page_id = 0;
$events = array();
if (file_exists('./plugins/'))
{
   $handle = opendir("./plugins/");
   while ($name = readdir($handle))
   {
      if ($name != "." && $name != ".." && is_dir("./plugins/".$name) && substr($name, 0, 1) != '_')
      {
         require_once('./plugins/'.$name.'/plugin.php');
         if (isset($plugin['events']))
         {
            foreach($plugin['events'] as $name=>$fn)
            {
               if (!isset($events[$name]))
                  $events[$name] = array();
               $events[$name][] = $fn;
            }
         }
      }
   }
   closedir($handle);
}
$db = mysqli_connect($mysql_server, $mysql_username, $mysql_password);
if (!$db)
{
   die('Failed to connect to database server!<br>'.mysqli_error($db));
} 

En daarbij lijkt dus iets mis te gaan bij de 2e keer 'session_start()'

Re: Protected page met database

Posted: Tue May 12, 2020 1:08 pm
by Pablo
Om dit moment is de combinatie 'CMS View' en "Protected Page" niet mogelijk.
Ik zal proberen dit in de toekomst mogelijk te maken.

Re: Protected page met database

Posted: Tue May 12, 2020 2:15 pm
by marloes
Welke aanpassing kan ik tot die tijd zelf in de gegenereerde php code doen om het te laten werken?

Re: Protected page met database

Posted: Tue May 12, 2020 2:33 pm
by Pablo
Je kunt proberen de tweede session_start() uit de code te verwijderen.

Re: Protected page met database

Posted: Wed May 13, 2020 12:59 pm
by marloes
Jaaaaa dat werkt! Ik kan nu beide functies gebruiken zonder problemen. Dankjewel! Ik heb het online gezet: https://maskmaarssen.nl/. De pagina waar het om ging staat uiteraard in het gedeelte waarvoor leden moeten inloggen. Maar hij is verder hetzelfde als de Nieuws pagina, waarvoor niet hoeft te worden ingelogd.