Ik heb een uitlog script met meerdere functies.
Ik wil al die functies eruit halen en er gewoon simpel een pagina van maken waar op staat, u bent nu uitgelogd u wordt automatisch doorgestuurd( Dit doe ik met een refresh naar home in de head)

Kan iemand dit voor mij veranderen? Dat er maar 1 log uit functie word gebruikt?

<?php
if (!checklogin()) {
echo "Je bent niet ingelogd, u gaat automatisch verder... <br><br><br><img src=\"images/245.gif\" /> ";
} else {

     if(!$_POST['logout']) {
$count_sessions = mysql_query("SELECT COUNT(*) FROM sessions WHERE userid = '".sqlsafe($_COOKIE['id'])."' ");
$sessionscounted = mysql_result($count_sessions,0);

if ($sessionscounted == 1) { $browserstring = "browser"; } else { $browserstring = "browsers"; }

echo "<p>Je bent op dit moment ingelogd op <b>".$sessionscounted."</b> ".$browserstring.".<br />Maak een keuze uit een van de volgende opties:</p>";
echo "<form method=\"POST\" action=\"\">";
echo "<input name=\"logoutmode\" type=\"radio\" value=\"onlythissession\">Alleen deze PC.<br />";
echo "<input name=\"logoutmode\" type=\"radio\" value=\"allsessions\">Alle PC's.<br />";
echo "<input name=\"logoutmode\" type=\"radio\" value=\"choosesession\" id=\"logout_by_session\">Kies een sessie:<br /><br /><br />";
echo "<table border=\"1\">";
        ?>
       <tr>
       <td>&nbsp;</td>
       <td>SessID</td>
       <td>Datum / tijd</td>
      </tr>
<?php
$sessioninfo = mysql_query("SELECT * FROM sessions WHERE userid = '".sqlsafe($_COOKIE['id'])."'");
while($sessions = mysql_fetch_assoc($sessioninfo)){
?>
      <tr>
       <td><input name="sessionid[]" type="checkbox" value="<?php echo $sessions['hash'];?>" onChange="document.getElementById('logout_by_session').checked = true"></td>
       <td><?php echo $sessions['hash'];?></td>
       <td><?php echo $sessions['logintime'];?></td>
      </tr>
       <?php
       }
       ?>
     </table>
     <input type="submit" name="logout" value="Uitloggen">
     <?php
     echo "</form>";

     } else {

              if($_POST['logoutmode'] == "onlythissession") {
               if(mysql_query("DELETE FROM sessions WHERE hash = '".$_COOKIE['hash']."' ")) {
               echo "<center>Wacht tot u uitgelogd bent<br><br><br><img src=\"images/245.gif\" /></center> ";
               } else {
               echo "Uw sessie is niet uitgelogd wegens een fout:<br />".mysql_error();
               }
            } else if ($_POST['logoutmode'] == "allsessions") {
              if(mysql_query("DELETE FROM sessions WHERE userid = '".$_COOKIE['id']."' ")) {
               echo "<center>Wacht tot u uitgelogd bent<br><br><br><img src=\"images/245.gif\" /></center>";
               } else {
               echo "Uw sessies zijn niet uitgelogd wegens een fout:<br />".mysql_error();
               }
            } else if ($_POST['logoutmode'] == "allothersession") {
              echo "Deze functie werkt nog niet.";
            } else if ($_POST['logoutmode'] == "choosesession") {
              echo "<center>Wacht tot u uitgelogd bent<br><br><br><img src=\"images/245.gif\" /></center>  ";

				foreach($_POST['sessionid'] as $index => $sessid) {
				 if(!mysql_query("DELETE FROM sessions WHERE hash = '".$sessid."' ")) {
		               echo "Je sessie is niet uitgelogd wegens een fout:<br />".mysql_error();
		               }
				}


            } else if (!$_POST['logoutmode']) {
              echo "Je ben vergeten een keuze te maken uit de uitlogopties.";

              } else {
              echo "Deze uitlogoptie is niet bekend.";
            }








   }
} 
?>
Volgens mij is het de bedoeling om hulp te vragen en niet te vragen of iemand een blok code voor jou compleet wilt herschrijven. Probeer het eerst zelf eens en wanneer je er niet meer uit komt kun je vragen wat je fout doet (als je foutcode's o.i.d. krijgt) of je kunt vragen hoe je het moet aanpakken! :-)

Wat ik zelf altijd doe is een bestand aanmaken logout.php en daar alle sessies in destroyen en unsetten. Vervolgens kun je daar een echo laten zien van 'u bent nu uitgelogd' en kun je (door middel van javascript ?) automatisch de bezoeker doorsturen naar een andere pagina.

Normaliter doe ik geen php dus mocht ik fout zitten dan hoor ik graag van iemand hoe Japser Schellekens dit beter kan aanpakken.
Dat eerst zelf proberen heb ik allang gedaan. waarom zou ik anders een vacature plaatsen?
Ik word gek van deze logout pagina, heb er zelf een vergoeding voor over.
Mijn excuses. Ik heb waarschijnlijk over het hoofd gezien dat dit topic onder vacatures is geplaatst.
Welke manier van uitloggen wil je dan? Je vraag klinkt nu een beetje alsof je bij een bakker komt met de vraag of hij brood heeft. Maar er bestaan vele soorten ervan.

Maar dit is en oud script van mij die ik je al eerder afraadde voor productiedoeleinden. Waarom gebruik je hem dan eigenlijk nog?

Gebruik liever sessies.
Dacht dat er bepaalde regels waren waaraan vacature moet voldoen. Die lijken te missen. Misschien dat eschwin daarom niet door had in welke categorie de post staat.
Kun je niet gewoon zelf de knoop doorhakken hoe je logout functionaliteit zou moeten werken in plaats van deze keuze voorleggen aan de gebruiker:

Als je expliciet uit wilt loggen op dat apparaat, ben je uitgelogd op dat apparaat.
Als iemand overal uitgelogd wil zijn, moet iemand zelf maar op elke locatie uitloggen.
Als hij/zij op een publieke machine ingelogd was en daar hun login onthouden is... sja. Geef gewoon een waarschuwing bij het inloggen "doe dit alleen op een vaste machine / netwerk wat je vertrouwt".

Uitloggen = uitloggen op dat apparaat. Simpel.

Dan kan die bovenstaande gribus een stuk korter als je het mij vraagt.

Bonus: je hebt daar een paar vette SQL injection gaten.

$_COOKIE rechtstreeks in een query? LOL.
Thomas van den Heuvel op 13/08/2015 19:41:55

Dan kan die bovenstaande gribus een stuk korter als je het mij vraagt.

Dat had je niet vroeger moeten zegen tegen mij, toen ik dit script maakte ;-)
Gelukkig zou ik het nu beter doen, maar tijd ontbreekt. In ieder geval met PHP-sessions zou je een goed script kunnen maken i.s.m. de lelijke session-handler die er nu achter hangt. Misschien zelfs een overwrite van de PHP-session-afhandeling.
Niet te vergeten, bedenk altijd aantal scenario's wat hackers met je script kunnen doen, iemand hoeft maar een cookie te veranderen in een sql injection.. Dan ben je de klos.

Reageren