should return on $_SESSION ['current_error'] (0) or via echo (1) */ function exiting($message,$location='index.php'){ header ( 'Location:' . $location ); $_SESSION ['current_error'] = $message; exit; } if (! isset ( $_GET ['action'] )) exiting(NULL,'40A.php'); switch ($_GET ['action']) { case 'register' : //Action : register if (!(isset ( $_POST ['pseudo'] ) && isset ( $_POST ['mdp'] ) && isset ( $_POST ['mdp2'] ))) exiting('Quand on demande des données, on donne des données !!!'); if ($_POST ['mdp'] === $_POST ['mdp2']) exiting('Tu auras du rentrer deux fois le même mot de passe (tu permet aussi de rendre le champs "Recopier le mot de passe" utile)'); if (preg_match ( "#^[a-zA-Z0-9\\-_]+$#", $_POST ['pseudo'] )) exiting('Le pseudo sera incorrect : Les seuls caractères autorisés sont :
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_'); if (preg_match ( "#^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\\-_&�����\"\\#'{}()[\\]|\\^@�+=\$��*!�:/;.,?�]+$#", $_POST ['mdp'] )) exiting('Le mot de passe fut incorrect : Les seuls caractères autorisés sont :
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_&éèàùçμ"#\'{}()[]|^@�+=$��*!�:/;.,?�'); $out = Membre::registerPerson ($_POST ['pseudo'],$_POST ['mdp']); if($out ===Membre::USED_USERNAME) exiting('Le pseudonyme est déjà utilisé (par une entité differente de vous)'); exiting('Vous avez déjà été correctement inscrit sur bernard.com','login.php'); case 'login' : //Action : login if (!( isset ( $_POST ['pseudo'] ) && isset ( $_POST ['mdp'] ) )) exiting('Quand on demande des données, on donne des données !!!'); $me = Membre::getFromPseudo($_POST['pseudo']); if(!$me) exiting('Kikètvou ? Pseudo inconnu ...'); if(!$me->connect($_POST ['mdp'])) exiting('Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); $_SESSION['session_id'] = $me->getID(); $_SESSION['session_mdp'] = $_POST['mdp']; exiting('Vous êtes bien connecté (vous l\'avez été et le serez également)!'); case 'changePassword' : //Action : change password if(!(isset($_POST['rmdp']) && isset($_POST['nmdp']) && isset($_POST['nmdp2']))) exiting('Quand on demande des données, on donne des données !!!'); if(!$me) exiting('Si tu ne te connectes pas, comment veut tu que je sache quel mot de passe changer !'); if(!$me->connect($_POST['rmdp'])) exiting('Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); if($_POST['nmdp'] !== $_POST['nmdp2']) exiting('Tu auras du rentrer deux fois le même mot de passe (tu permet aussi de rendre le champs "Recopier le mot de passe" utile)'); $out = $me->changePassword($_POST['nmdp']); if($out == Membre::PASSWORD_TOO_LONG) exiting('Mot de passe ≠ roman (255 caractères maximum)'); exiting('Vos dispositifs d\'identification ont été correctement changés'); case 'createDiscussion' : //Action : create discussion if(!isset($_POST['name'])) exiting('Quand on demande des données, on donne des données !!!'); if(!$me) exiting('Veuillez vous identifier pour acceder à cette section !!!'); if(!$me->connect($_SESSION['session_mdp'])) exiting('Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); if($me->isAdminLevelLowerThan(2)) exiting('Vous n\'êtes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 2 ou plus)'); $out = Discussion::createDiscussion($_POST ['name'],$_SESSION ['session_id']); if($out === Discussion::NAME_ALREADY_USED) exiting('Mince j\'ai déjà utilisé l\'écriteau avec ce nom ... t\'en as pas un autre ?'); if($out === Discussion::ILLEGAL_NAME) exiting('Y a des trucs qui ne me plaisent pas dans le nom que tu as donné à ta discussion ...
Je n\'accepte que les caractères abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789éèàμ_-\'()[\\]\\\\/,;:.§!ù%£$¤=+-*\\#~"|ç@'); if($out === Discussion::TOO_LONG_NAME) exiting('Nom de discussion ≠ roman (255 caractères maximum)'); exiting('C\'est fait !!! (la création de ta discussion bien sûr)'); case 'postMessage' : //Action : post message if(!$me) exiting('Veuillez vous identifier pour acceder à cette section !!!'); if(!$me->connect($_SESSION['session_mdp'])) exiting($me.'Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); $discussion = new Discussion($_GET ['d']); if(!$discussion->exists()) exiting('Pour des raisons d\'intégrité du site, nous avons décidé de ne pas autoriser les messages dans les discussions inexistantes (pour les superadmins, c\'est possible en forcant la bdd &128516; )'); if(!$discussion->canAccess($me)) exiting('Tu pensais que tu pouvais écrire des messages dans une discussion à laquelle tu n\'as pas accès !!! Tu te crois où ?'); Message::sendMessage($me,$discussion,$_POST ['msg']); exiting(NULL,'discut.php?d='.$discussion->getID()); case 'deleteMessage' : //Action : delete message if(!isset($_GET ['m'])) exiting('c'); if(!$me) exiting('Veuillez vous identifier pour supprimer un message !!!'); if(!$me->connect($_SESSION['session_mdp'])) exiting('Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); $message = new Message($_GET['m']); if(!$message->exists()) exiting('Je vais avoir du mal à supprimer le message n&ecute;ant ...'); if($me->isAdminLevelLowerThan(6) && $me->getID() !== $message->getSender()->getID()) exiting('Vous n\'êtes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 6 ou plus OU etre l\'auteur de ce message'); $message->removeMessage(); exiting(NULL,'discut.php?d='.$message->getDiscussion()->getID()); case 'editVersion' : //Action : edit version if(!isset($_GET ['v'])) exiting('Quand on demande des données, on donne des données !!!'); if(!$me) exiting('Veuillez vous identifier pour éditer une version !!!'); if(!$me->connect($_SESSION['session_mdp'])) exiting('Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); $version = new Version($_GET['v']); if(!$version->exists()) exiting('Je vais avoir du mal à éditer la version n&ecute;ant ...'); if($me->isAdminLevelLowerThan(13) && $version->getProject()->haveRights($me)) exiting('Vous n\'êtes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 6 ou plus OU etre un des pocesseurs du projet'); //TODO concretly modify the version, with all the options (remove included) exit; case 'getDiscutsMessages' : //Action : get discut's messages //TODO precise output type (via $_GET) $query = 'SELECT m.ID AS messageID,u.ID AS senderID, u.pseudo AS pseudo, m.texte AS texte, m.sendTime AS sendTime, UNIX_TIMESTAMP(m.sendTime) AS sendTimestamp FROM users AS u INNER JOIN messages AS m ON u.ID = m.senderID WHERE m.discussion_id=?'; $data = array (); if(!isset($_GET ['d'])){ echo 'ERROR : NO DISCUSSION PROVIDED'; exit; } if($me?!$me->connect($_SESSION['session_mdp']):FALSE){ echo 'Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'; exit; } $discut = new Discussion($_GET ['d']); if(!$discut->exists()){ echo 'Quand on demande des données, on donne des données !!!'; exit; } $messages = Utility::arrayIfNot(Message::getFromDiscussion($discut)); $jmsgs = array(); foreach($messages as $message){ $jmsg = array(); $jmsg['messageID'] = $message->getID(); $jmsg['senderID'] = $message->getSender()->getID(); $jmsg['pseudo'] = $message->getSender()->getPseudo(); $jmsg['texte'] = $message->getText(); $jmsg['sendTime'] = $message->getSendDate(); $jmsg['sendTimestamp'] = strToTime($message->getSendDate()); $jmsg['rights'] = ($me)? $message->getSender()->getID() == $me->getID() || $me->isAdminLevelGreaterThan(5):FALSE; array_push($jmsgs,$jmsg); } echo json_encode ( $jmsgs ); flush (); exit; case 'getPeopleList' : //Action : get projest's secondary owners //TODO precise output type (via $_GET) $data = array (); if(!isset($_GET ['p'])){ echo 'ERROR : NO PROJECT PROVIDED'; exit; } if($me?!$me->connect($_SESSION['session_mdp']):FALSE){ echo 'Votre empreinte rétinale, digitale et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'; exit; } $projet = new Projet($_GET ['p']); if(!$projet->exists()){ echo 'Quand on demande des données, on donne des données !!!'; exit; } $owners = $projet->getSecondaryOwners(); $jmsgs = array(); foreach($owners as $owner){ $jmsg = array(); $jmsg['ID'] = $owner->getID(); $jmsg['pseudo'] = $owner->getPseudo(); array_push($jmsgs,$jmsg); } echo json_encode ( $jmsgs ); flush (); exit; case 'removePeople' : //Action : remove secodary owner if(!isset($_GET ['p'])) exiting('c'); if(!isset($_POST ['peopleIDs'])) exiting('o'); if(!$me) exiting('Veuillez vous identifier pour supprimer un secondary owner !!!'); if(!$me->connect($_SESSION['session_mdp'])) exiting('Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); $projet = new Projet($_GET['p']); if(!$projet->exists()) exiting('Je vais avoir du mal à supprimer un des propriétaires du projet néant ...'); if(!($me->getID() == $projet->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13))) exiting('Vous n\'êtes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propri�taire du projet'); $todIDs = explode(',',$_POST ['peopleIDs']); $sowners = $projet->getSecondaryOwners(); $nsowners = array();; foreach($sowners as $sowner)if(!in_array($sowner->getID(),$todIDs))$nsowners[] = $sowner; $projet->setSecondaryOwners($nsowners); exit; case 'addPeople' : //Action : add secodary owner if(!isset($_GET ['p'])) exiting('c'); if(!isset($_POST ['peopleName'])) exiting('o'); if(!$me) exiting('Veuillez vous identifier pour ajouter un secondary owner !!!'); if(!$me->connect($_SESSION['session_mdp'])) exiting('Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); $projet = new Projet($_GET['p']); if(!$projet->exists()) exiting('Je vais avoir du mal à ajouter un propriétaires au projet néant ...'); if(!($me->getID() == $projet->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13))) exiting('Vous n\'êtes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propri�taire du projet'); $membre = Membre::getFromPseudo($_POST ['peopleName']); if(count($membre) != 1) exiting('Vous voulez ajouter QUI ?!!'); $projet->addSecondaryOwner($membre); exit; case 'setPublicy' : //Action : set project publicy if(!isset($_GET ['p'])) exiting('c'); if(!isset($_POST ['publicy'])) exiting('o'); if(!$me) exiting('Veuillez vous connecter pour changer la "publicité"d\'un projet !!!'); if(!$me->connect($_SESSION['session_mdp'])) exiting('Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); $projet = new Projet($_GET['p']); if(!$projet->exists()) exiting('Je vais avoir du mal à ajouter un propriétaires au projet néant ...'); if(!($me->getID() == $projet->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13))) exiting('Vous n\'êtes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propri�taire du projet'); $projet->setPublicy($_POST ['publicy'] == 'true'); echo 'ok'; exit; case 'nameOwner' : //Action : name a new Owner if(!isset($_GET ['p'])) exiting('c'); if(!isset($_POST ['nOwnerID'])) exiting('o'); if(!$me) exiting('Veuillez vous connecter pour changer le propriétaire d\'un projet !!!'); if(!$me->connect($_SESSION['session_mdp'])) exiting('Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); $projet = new Projet($_GET['p']); if(!$projet->exists()) exiting('Je vais avoir du mal à changer le propriétaires au projet néant ...'); if(!($me->getID() == $projet->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13))) exiting('Vous n\'êtes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propri�taire du projet'); $membre = new Membre($_POST ['nOwnerID']); if(!$membre->exists()) exiting('Nous sommes hereux d\'acceuillir néant , le touveau propriétaire !!! Euh ...'); $projet->setOwner($membre); $todIDs = $membre->getID(); $sowners = $projet->getSecondaryOwners(); $nsowners = array(); foreach($sowners as $sowner)if($sowner->getID() != $todIDs)$nsowners[] = $sowner; $projet->setSecondaryOwners($nsowners); $projet->addSecondaryOwner($me); echo 'ok'; exit; case 'delProject' : //Action : delete this project if(!isset($_GET ['p'])) exiting('c'); if(!$me) exiting('Veuillez vous identifier pour supprimer un projet !!!'); if(!$me->connect($_SESSION['session_mdp'])) exiting('Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); $projet = new Projet($_GET['p']); if(!$projet->exists()) exiting('Je vais avoir du mal à supprimer le projet néant ...'); if(!($me->getID() == $projet->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13))) exiting('Vous n\'êtes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propri�taire du projet'); $projet->delete(); echo 'ok'; exit; case 'getVersionList' : //Action : get project's versions //TODO precise output type (via $_GET) $data = array (); if(!isset($_GET ['p'])){ echo 'ERROR : NO PROJECT PROVIDED'; exit; } if($me?!$me->connect($_SESSION['session_mdp']):FALSE){ echo 'Votre empreinte rétinale, digitale et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'; exit; } $projet = new Projet($_GET ['p']); if(!$projet->exists()){ echo 'Quand on demande des données, on donne des données !!!'; exit; } $versions = Version::getFromProject($projet); $jmsgs = array(); foreach($versions as $version){ $jmsg = array(); $jmsg['id'] = $version->getID(); $jmsg['name'] = $version->getName(); $jmsg['versionAbs'] = $version->getVersionAbs(); array_push($jmsgs,$jmsg); } echo json_encode ( $jmsgs ); flush (); exit; case 'createVersion' : //Action : add secodary owner if(!isset($_GET ['p'])) exiting('c'); if(!isset($_POST ['name'])) exiting('o'); if(!isset($_POST ['langage'])) exiting('q'); if(!isset($_POST ['tags'])) exiting('m'); if(!$me) exiting('Veuillez vous identifier pour ajouter une version !!!'); if(!$me->connect($_SESSION['session_mdp'])) exiting('Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); $projet = new Projet($_GET['p']); if(!$projet->exists()) exiting('Je vais avoir du mal à ajouter une version au projet néant ...'); if(!($me->getID() == $projet->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13))) exiting('Vous n\'êtes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propriétaire du projet'); //TODO make auto version_abs sorting according to $_POST ['insertIndex'] //TODO verify tags and langage $projet->newVersion($_POST ['name'],Langage::getFromName($_POST ['langage']),$_POST ['tags'],Version::getHighestFromProject($projet)->getVersionAbs()+1); //TODO do a REAL redirection (not to the highest) echo 'www.bernard.890m.com/version.php?v=' . Version::getHighestFromProject($projet)->getID(); exit; case 'editVersion' : //Action : add secodary owner if(!isset($_GET ['v'])) exiting('c'); if(!isset($_POST ['name'])) exiting('o'); if(!isset($_POST ['langage'])) exiting('q'); if(!isset($_POST ['tags'])) exiting('m'); if(!$me) exiting('Veuillez vous identifier pour éditer une version !!!'); if(!$me->connect($_SESSION['session_mdp'])) exiting('Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); $version = new Version($_GET['v']); if(!$version->exists()) exiting('Je vais avoir du mal à éditer la version néant ...'); if(!($me->getID() == $version->getProject()->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13))) exiting('Vous n\'êtes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propriétaire du projet'); //TODO make auto version_abs sorting according to $_POST ['insertIndex'] //TODO verify tags and langage $projet->editVersion($version,$_POST ['name'],Langage::getFromName($_POST ['langage']),$_POST ['tags'],Version::getHighestFromProject($projet)->getVersionAbs()+1); //TODO do a REAL redirection (not to the highest) echo 'www.bernard.890m.com/version.php?v=' . Version::getHighestFromProject($projet)->getID(); exit; case 'delVersion' : //Action : delete this version if(!isset($_GET ['p'])) exiting('c'); if(!$me) exiting('Veuillez vous identifier pour supprimer une version !!!'); if(!$me->connect($_SESSION['session_mdp'])) exiting('Votre empreinte rétinale, digital et génetique ne correspond pas à celles stoquées dans notre base de données (Technologie à venir)'); $version = new Version($_GET['p']); if(!$version->exists()) exiting('Je vais avoir du mal à supprimer la version néant ...'); if(!($me->getID() == $version->getProject()->getOwner()->getID() OR $me->isAdminLevelGreaterThan(13))) exiting('Vous n\'êtes pas assez PUISSANT !!!!!!!!!! (Faut un adminLevel de 13 ou plus OU etre propriétaire du projet'); $version->delete(); echo 'ok'; exit; }