www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 928c8efb7a0e9637bf72063beb2f8618fbe62bf5
parent 0ff04d20d497fe338b9b01a66787499e20c5a62d
Author: Bertrand BRUN <bertrand0brun@gmail.com>
Date:   Fri, 25 Feb 2011 07:25:45 +0100

Merge branch 'master' of https://github.com/jsmaniac/2011-m1s2-ter

Diffstat:
Mcode/serveur/README.sh | 25+++++++++++++++++++------
Mcode/serveur/dump2sqlite.sh | 32++++++++++++++++++++++++--------
Mcode/serveur/php/.gitignore | 1+
Mcode/serveur/php/contact.php | 157+++++++++++++++++++++++++++++++++++++++----------------------------------------
Mcode/serveur/php/createGame.php | 53+++++++++++++++++++++++------------------------------
Mcode/serveur/php/download.php | 42++++++++++++++++++------------------------
Mcode/serveur/php/index.php | 71++++++++++++++++++++++++++++++++++++-----------------------------------
Mcode/serveur/php/login.php | 111+++++++++++++++++++++++++++++++++++++++----------------------------------------
Mcode/serveur/php/pticlic.php | 40++++++++++++++++++++++++++++++++--------
Dcode/serveur/php/ressources/footer.html | 24------------------------
Acode/serveur/php/ressources/footer.inc | 13+++++++++++++
Acode/serveur/php/ressources/locations.inc | 27+++++++++++++++++++++++++++
Dcode/serveur/php/ressources/menu.html | 19-------------------
Acode/serveur/php/ressources/menu.inc | 22++++++++++++++++++++++
Acode/serveur/php/ressources/showmsg.inc | 27+++++++++++++++++++++++++++
Mcode/serveur/php/ressources/simple.css | 48+++++++++++++++++++++++++++++-------------------
Acode/serveur/php/ressources/strings.inc | 36++++++++++++++++++++++++++++++++++++
Mcode/serveur/php/signup.php | 340++++++++++++++++++++++++++++++++++++++-----------------------------------------
18 files changed, 601 insertions(+), 487 deletions(-)

diff --git a/code/serveur/README.sh b/code/serveur/README.sh @@ -3,22 +3,35 @@ # cat dump.url # Aller à cette adresse, et télécharger le dernier dump echo -echo "Étape 1/3 : Téléchargement" -echo "==========================" +echo "Étape 1/5 : Téléchargement de la version du dump" +echo "================================================" latest="$(wget 'http://www.lirmm.fr/~lafourcade/JDM-LEXICALNET-FR/?C=M;O=D' -O- | grep '\-LEXICALNET\-JEUXDEMOTS\-FR\-\(NOHTML\)\?\.txt' | head -n 1 | sed -E -e 's/^.*<a href="([0-9]*-LEXICALNET-JEUXDEMOTS-FR-(NOHTML)?\.txt)">.*$/\1/')" + +echo +echo "Étape 2/5 : Téléchargement du dump" +echo "==================================" wget -c 'http://www.lirmm.fr/~lafourcade/JDM-LEXICALNET-FR/'"$latest" echo -echo "Étape 2/3 : Conversion vers sql" +echo "Étape 3/5 : Conversion vers sql" echo "===============================" ./dump2sqlite.sh "$latest" > sql echo -echo "Étape 3/3 : Insertion dans la bdd" +echo "Étape 4/5 : Insertion dans la bdd" echo "=================================" -mv php/db php/db.old +[ -e php/db ] && mv php/db php/db.old pv sql | sqlite3 php/db -sudo chgrp -R www-data php || sudo chgrp -R www php + +echo +echo "Étape 5/5 : Réglage des permissions" +echo "===================================" +: > /tmp/log-chmod-pticlic +sudo chgrp -R www-data php > /tmp/log-chmod-pticlic || sudo chgrp -R www php > /tmp/log-chmod-pticlic || { + cat /tmp/log-chmod-pticlic + echo "ATTENTION : Les deux méthodes de chgrp ont échoué !" + exit 1 +} chmod 664 php/db chmod 775 php diff --git a/code/serveur/dump2sqlite.sh b/code/serveur/dump2sqlite.sh @@ -30,15 +30,10 @@ create table game(gid integer primary key autoincrement, eid_central_word, relat create table game_cloud(gid, num, difficulty, eid_word, totalWeight, probaR1, probaR2, probaR0, probaTrash); create table played_game(pgid integer primary key autoincrement, gid, login, timestamp); create table played_game_cloud(pgid, gid, type, num, relation, weight, score); +create table random_cloud_node(eid,nbneighbors); +create table random_center_node(eid); insert into user(login, mail, hash_passwd, score) values('$(echo "$user" | sed -e "s/'/''/g")', 'foo@isp.com', '$(echo "$passwd" | dd bs=1 count="${#passwd}" | (if which md5sum >/dev/null 2>&1; then md5sum; else md5; fi) | cut -d ' ' -f 1)', 0); - -create index i_relation_start on relation(start); -create index i_relation_end on relation(end); -create index i_relation_type on relation(type); -create index i_relation_start_type on relation(start,type); -create index i_relation_end_type on relation(end,type); -create index i_played_game_all on played_game(pgid, gid, login, timestamp); EOF # tr : pour virer le CRLF qui traîne @@ -56,4 +51,25 @@ cat "$1" \ | grep -v '^//' \ | grep -v '^$' -echo "commit;" +cat <<EOF +create index i_relation_start on relation(start); +create index i_relation_end on relation(end); +create index i_relation_type on relation(type); +create index i_relation_start_type on relation(start,type); +create index i_relation_end_type on relation(end,type); +create index i_played_game_all on played_game(pgid, gid, login, timestamp); +insert into random_cloud_node(eid,nbneighbors) select eid,sum(nb) from ( + select (select type from node where node.eid = relation.start) as type, + start as eid, + count(start) as nb from relation where type not in (4, 12, 36, 18, 29, 45, 46, 47, 48, 1000, 1001) + group by start + union + select (select type from node where node.eid = relation.start) as type, + end as eid, + count(end) as nb from relation where type not in (4, 12, 36, 18, 29, 45, 46, 47, 48, 1000, 1001) + group by end +) where type = 1 group by eid; +create index i_random_cloud_node_nbneighbors on random_cloud_node(nbneighbors); +insert into random_center_node(eid) select eid from random_cloud_node where nbneighbors > 3; +commit; +EOF diff --git a/code/serveur/php/.gitignore b/code/serveur/php/.gitignore @@ -1 +1,2 @@ db.old +log.txt diff --git a/code/serveur/php/contact.php b/code/serveur/php/contact.php @@ -1,9 +1,11 @@ <?php +require_once("ressources/strings.inc"); session_start(); $displayForm = true; $emailaddress = ""; $mailfile = "mails.txt"; +$msg = null; function writemail($filename,$email,$subject,$message) { @@ -13,7 +15,7 @@ function writemail($filename,$email,$subject,$message) fprintf($file,"%s\n%s\n%s\n\n",$email,$subject,$message); } else - die("Erreur lors de l'ouverture du fichier d'enregistrement de mails"); + die($strings['err_contact_open_mailfile']); fclose($file); } @@ -22,35 +24,30 @@ function writemail($filename,$email,$subject,$message) if(isset($_POST['email']) && isset($_POST['subject']) && isset($_POST['message'])) if(!empty($_POST['email']) && !empty($_POST['subject']) && !empty($_POST['message'])) { - $from = $_POST['email']; - $subject = $_POST['subject']; - $header = 'From: '.$from . "\r\n" . - 'Reply-To: '.$from . "\r\n" . - 'X-Mailer: PHP/' . phpversion(); - $dest = $emailaddress; - $message = str_replace("\r\n","\n",$_POST['message']); - - writemail($mailfile,$from,$subject,$message); + $from = $_POST['email']; + $subject = $_POST['subject']; + $header = 'From: '.$from . "\r\n" . + 'Reply-To: '.$from . "\r\n" . + 'X-Mailer: PHP/' . phpversion(); + $dest = $emailaddress; + $message = str_replace("\r\n","\n",$_POST['message']); + + writemail($mailfile,$from,$subject,$message); - /*if(mail($dest,$subject,$message,$header)) - { - $notif = "Votre email à été envoyé"; - $displayForm = false; - } - else - $notif = "Une erreur s'est produite lors de l'envoi du message";*/ - - $notif = "Votre email à été envoyé"; + /*if(mail($dest,$subject,$message,$header)) + { + $msg = $strings['ok_msg_sent']; + $displayForm = false; } + else + $msg = "Une erreur s'est produite lors de l'envoi du message";*/ + $msg = $strings['ok_msg_sent']; + } else - $notif = "Veuillez remplir tout les champs"; - - -?> + $msg = $strings['err_contact_fill_all']; -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Titre</title> @@ -58,64 +55,64 @@ if(isset($_POST['email']) && isset($_POST['subject']) && isset($_POST['message'] <link rel="stylesheet" href="ressources/simple.css" /> </head> <body> - <div class="menu"> - <?php include("ressources/menu.html"); ?> - </div> + <?php include("ressources/menu.inc"); ?> <div class="content"> + <?php include("ressources/showmsg.inc"); ?> + <h2>Contact</h2> <?php - if(isset($notif)) + if($msg != null) + if($displayForm == true) + echo '<span class="message warning">'.htmlspecialchars($msg).'</span>'; + else + echo '<span class="message success">'.htmlspecialchars($msg).'</span>'; + if($displayForm == true) - echo '<span class="message warning">'.$notif.'</span>'; - else - echo '<span class="message success">'.$notif.'</span>'; - - if($displayForm == true) - { - ?> - <form action="contact.php" method="POST"> - <table class="contacttbl"> - <tr> - <td> - <label for="email">Votre e-mail : </label> - </td> - <td> - <input type="text" id="email" name="email" /> - </td> - </tr> - <tr> - <td> - <label for="subject">Objet du mail : </label> - </td> - <td> - <input type="text" id="subject" name="subject" /> - </td> - </tr> - <tr> - <td> - <label for="message">Votre message : </label> - </td> - <td> - <textarea class="txMessage" id="message" name="message"></textarea> - </td> - </tr> - <tr> - <td> - - </td> - <td> - <span class="btSubmit"><input type="submit" value="Envoyer le message" /></span> - </td> - </tr> - </table> - </form> - <?php - } + { // Fin sous le <form> ci-dessous + ?> + <p> + Vous souhaitez signaler un défaut dans l'application, ou bien vous avez des remarques, des suggestions ?<br /> + Faites nous en part en nous envoyant un message par le biais du formulaire qui suit : + </p> + <form action="contact.php" method="POST"> + <table class="contacttbl"> + <tr> + <td> + <label for="email">Votre e-mail : </label> + </td> + <td> + <input type="text" id="email" name="email" /> + </td> + </tr> + <tr> + <td> + <label for="subject">Objet du mail : </label> + </td> + <td> + <input type="text" id="subject" name="subject" /> + </td> + </tr> + <tr> + <td> + <label for="message">Votre message : </label> + </td> + <td> + <textarea class="txMessage" id="message" name="message"></textarea> + </td> + </tr> + <tr> + <td> + + </td> + <td> + <span class="btSubmit"><input type="submit" value="Envoyer le message" /></span> + </td> + </tr> + </table> + </form> + <?php + } // Fin de if($displayForm == true) ?> </div> - <div class="footer"> - <?php include("ressources/footer.html"); ?> - </div> + <?php include("ressources/footer.inc"); ?> </body> -</html><?php - -?> +</html> diff --git a/code/serveur/php/createGame.php b/code/serveur/php/createGame.php @@ -1,4 +1,5 @@ <?php +require_once("ressources/strings.inc"); session_start(); $err = false; @@ -10,18 +11,12 @@ if(isset($_POST['nbcloudwords'])) for($i = 0; $i < $nbword; $i++) if(!isset($_POST['word'.$i]) || empty($_POST['word'.$i])) { $err = true; - $msg = "Tous les mots du nage ne sont pas renseignés"; + $msg = $strings['err_creategame_fill_all']; } if($err == false) - - -$state = 0; -?> - -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + $state = 0; +?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>PtiClic Android - Création de partie</title> @@ -29,30 +24,28 @@ $state = 0; <link rel="stylesheet" href="ressources/simple.css" /> </head> <body> - <div class="menu"> - <?php include("ressources/menu.html"); ?> - </div> + <?php include("ressources/menu.inc"); ?> <div class="content"> + <?php include("ressources/showmsg.inc"); ?> <form action="createGame.php" method="POST"> - <?php - if(!isset($_POST["nbcloudwords"])) { - echo '<input type="text" name="nbcloudwords" />'; - echo '<input type="submit" value="suivant" />'; - } - else { - echo '<input type="text" name="centralword" />'; - - for($i = 0; $i < $_POST['nbcloudwords']; $i++) - echo '<input type="text" name="word'.$i.'" />'; - - echo '<input type="submit" value="Enregistrer la partie" />'; - } - ?> - + <?php + if(!isset($_POST["nbcloudwords"])) + { + echo '<input type="text" name="nbcloudwords" />'; + echo '<input type="submit" value="suivant" />'; + } + else + { + echo '<input type="text" name="centralword" />'; + + for($i = 0; $i < $_POST['nbcloudwords']; $i++) + echo '<input type="text" name="word'.$i.'" />'; + + echo '<input type="submit" value="Enregistrer la partie" />'; + } + ?> </form> </div> - <div class="footer"> - <?php include("ressources/footer.html"); ?> - </div> + <?php include("ressources/footer.inc"); ?> </body> </html> diff --git a/code/serveur/php/download.php b/code/serveur/php/download.php @@ -2,46 +2,40 @@ session_start(); if(!isset($_SESSION['userId'])) - header("location:login.php?return=download.php"); - -?> - -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + header("location:login.php?return=download&showmsg=err_download_notauth"); +?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> - <title>PtiClic sous Android, version Alpha - Téléchargement</title> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <link rel="stylesheet" href="ressources/simple.css" /> + <title>PtiClic sous Android, version Alpha - Téléchargement</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <link rel="stylesheet" href="ressources/simple.css" /> </head> <body> - <div class="menu"> - <?php include("ressources/menu.html"); ?> - </div> + <?php include("ressources/menu.inc"); ?> <div class="content"> + <?php include("ressources/showmsg.inc"); ?> + <h2>Téléchargement de l'application</h2> <span class="downloadarea"><a href="ressources/pticlic.apk" id="downloadlink">Télécharger</a></span> <h2>Installation de l'application</h2> <h3> A partir de votre téléphone </h3> <ul> - <li> <a href="ressources/pticlic.apk" />Téléchargez le fichier d'installation</a></li> - <li>Une fois téléchargé, cliquez sur le fichier dans la barre de notification d'Android et suivez - les instructions d'installation. Vous devrez patientez quelques instant pendant l'installation.</li> + <li><a href="ressources/pticlic.apk">Téléchargez le fichier d'installation</a></li> + <li>Une fois téléchargée, cliquez sur le fichier dans la barre de notification d'Android et suivez + les instructions d'installation. Vous devrez patientez quelques instant pendant l'installation.</li> <li>Une fois l'installation terminée, démarrez l'application</li> <li> Suivez attentivement les instructions lors du premier démarrage de l'application</li> </ul> <h3> A partir de votre ordinateur </h3> <ul> - <li><a href="ressources/pticlic.apk">Téléchargez le fichier d'installation</a> </li> - <li>Transférez ce fichier sur votre téléphone à l'aide de bluetooth, une clé usb ou autre</li> - <li>Depuis votre téléphone, retrouvez sur votre carte mémoire l'application que vous - venez de transférer</li> - <li>Cliquez sur l'application afin de l'installer sur votre téléphone</li> - <li>Suivez attentivement les instructions lors du premier démarrage de l'application</li> + <li><a href="ressources/pticlic.apk">Téléchargez le fichier d'installation</a> </li> + <li>Transférez ce fichier sur votre téléphone à l'aide de bluetooth, une clé usb ou autre</li> + <li>Depuis votre téléphone, retrouvez sur votre carte mémoire l'application que vous + venez de transférer</li> + <li>Cliquez sur l'application afin de l'installer sur votre téléphone</li> + <li>Suivez attentivement les instructions lors du premier démarrage de l'application</li> </ul> </div> - <div class="footer"> - <?php include("ressources/footer.html"); ?> - </div> + <?php include("ressources/footer.inc"); ?> </body> </html> diff --git a/code/serveur/php/index.php b/code/serveur/php/index.php @@ -1,9 +1,6 @@ <?php -session_start(); -?> - -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + session_start(); +?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> @@ -12,41 +9,45 @@ session_start(); <link rel="stylesheet" href="ressources/simple.css" /> </head> <body> - <div class="menu"> - <?php include("ressources/menu.html"); ?> - </div> + <?php include("ressources/menu.inc"); ?> <div class="content"> + <?php include("ressources/showmsg.inc"); ?> <h2>Jeu PtiClic - Téléchargement gratuit</h2> - <p>Vous aimez les jeux de mots&nbsp;? Vous avez un smartphone sous Android&nbsp;? - PtiClic est pour vous&nbsp;!</p> - <p>Soyez parmi les tous premiers à <a href="download.php">télécharger cette - application gratuitement</a> en devenant Alpha-testeur. - L'<a href="signup.php">inscription</a> est simple, il suffit de fournir - une adresse mail, de créer un identifiant et vous pourrez commencer à jouer&nbsp;!</p> - <!-- <p>Il ne s'agit pas d'une version d'essai et l'application ne contient aucun - spyware.</p> --> - - <h2>Le principe du jeu</h2> - <p>Un mot central apparaît ainsi que quatre associations - telles que "synonyme", "antonyme", "est une sorte de", "corbeille"... L'idée est - de lier de nouveaux mots au mot central à l'aide des associations. - Plus votre réponse est juste, plus vous gagnez de points. - Attention, vous pouvez aussi perdre des points&nbsp;!</p> + <p> + Vous aimez les jeux de mots&nbsp;? Vous avez un smartphone sous Android&nbsp;? + PtiClic est pour vous&nbsp;! + </p> + <p> + Soyez parmi les tous premiers à <a href="download.php">télécharger cette + application gratuitement</a> en devenant Alpha-testeur. + L'<a href="signup.php">inscription</a> est simple, il suffit de fournir + une adresse mail, de créer un identifiant et vous pourrez commencer à jouer&nbsp;! + </p> + + <h2>Le principe du jeu</h2> + <p> + Un mot central apparaît ainsi que quatre associations + telles que "synonyme", "antonyme", "est une sorte de", "corbeille", … L'idée + est de lier de nouveaux mots au mot central à l'aide des associations. + Plus votre réponse est juste, plus vous gagnez de points. + Attention, vous pouvez aussi perdre des points&nbsp;! + </p> <h2>Le développement de l'application</h2> - <p>La version beta du jeu PtiClic sous Android est en cours de développement. - Le projet s'inscrit dans le cadre d'un TER de Master en informatique - à l'Université Montpellier II sous la direction de Mathieu LAFOURCADE. L'équipe - de conception et de développement est composée de quatre étudiants&nbsp;: Bertrand BRUN, - Yoann BONAVERO, John CHARRON et Georges DUPERON. + <p> + La version beta du jeu PtiClic sous Android est en cours de développement. + Le projet s'inscrit dans le cadre d'un TER de Master en informatique + à l'Université Montpellier II sous la direction de Mathieu LAFOURCADE. L'équipe + de conception et de développement est composée de quatre étudiants&nbsp;: Bertrand BRUN, + Yoann BONAVERO, John CHARRON et Georges DUPERON. + </p> + <h2>Votre rôle en tant qu'Alpha-testeur</h2> + <p> + L'application étant en phase de développement et offerte gratuitement, + nous serions reconnaissant si vous pouviez nous donner votre avis, vos suggestions, + vos idées. <a href="contact.php">Envoyez-nous un message&nbsp;!</a> </p> - <h2>Votre rôle en tant qu'Alpha-testeur</h2> - <p>L'application étant en phase de développement et offerte gratuitement, - nous serions reconnaissant si vous pouviez nous donner votre avis, vos suggestions, - vos idées. <a href="contact.php">Envoyez-nous un message&nbsp;!</a></p> - </div> - <div class="footer"> - <?php include("ressources/footer.html"); ?> </div> + <?php include("ressources/footer.inc"); ?> </body> </html> diff --git a/code/serveur/php/login.php b/code/serveur/php/login.php @@ -1,18 +1,20 @@ <?php -session_start(); +session_start(); +require_once("ressources/strings.inc"); +require_once("ressources/locations.inc"); + +$msg = null; if(isset($_POST['loginid']) && !empty($_POST['loginid'])) - $user = SQLite3::escapeString($_POST['loginid']); + $user = SQLite3::escapeString($_POST['loginid']); if(isset($_POST['loginpswd']) && !empty($_POST['loginpswd'])) $pswd = md5($_POST['loginpswd']); -if(isset($_GET['return'])) - $location = $_GET['return']; -else - $location = "index.php"; + +$location = getlocation(); if(isset($_GET['d']) && $_GET['d'] == "true") { session_destroy(); - header("location:index.php"); + return_to($location, "?show_msg=ok_login_disconnect"); } if(isset($user) && isset($pswd)) @@ -20,22 +22,20 @@ if(isset($user) && isset($pswd)) $SQL_DBNAME = (dirname(__FILE__) . "/db"); if (!$db = new SQlite3($SQL_DBNAME)) - mDie(1,"Erreur lors de l'ouverture de la base de données SQLite3"); + die($strings['err_login_dbopen']); if($pswd == ($db->querySingle("SELECT hash_passwd FROM user WHERE login='$user';"))) { - $_SESSION['userId'] = $user; + $_SESSION['userId'] = $user; // Le login se fait aussi dans signup. - header("location:".$location); + return_to($location); } else - $msg = "Mauvais nom d'utilisateur ou mot de passe"; + $msg = $strings['err_login_bad_user_pass']; } else if(isset($user) or isset($pswd)) - $msg = "Veuillez remplir tous les champs"; -?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + $msg = $strings['err_login_fill_all']; +?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Titre</title> @@ -43,47 +43,46 @@ else if(isset($user) or isset($pswd)) <link rel="stylesheet" href="ressources/simple.css" /> </head> <body> - <div class="menu"> - <?php include("ressources/menu.html"); ?> - </div> + <?php include("ressources/menu.inc"); ?> <div class="content"> - <p>Vous êtes déjà inscrit&nbsp;? Authentifiez-vous&nbsp;:</p> - <?php - if(isset($msg)) - echo '<span class="message warning">'.$msg.'</span>'; - ?> - <form name="loginform" method="post" action="login.php?return=<?php echo $location; ?>"> - <table class="logintbl"> - <tr> - <td> - <label for="loginid"> Identifiant&nbsp;:</label> - </td> - <td> - <input name="loginid" type="text" /><br /> - </td> - </tr> - <tr> - <td> - <label for="loginpswd"> Mot de passe&nbsp;: </label> - </td> - <td> - <input name="loginpswd" type="password" /> - </td> - </tr> - <tr> - <td> - - </td> - <td> - <input type="submit" name="loginsubmit" value="Valider" /> - </td> - </tr> - </table> - </form> - </div> - - <div class="footer"> - <?php include("ressources/footer.html"); ?> + <h2>Connexion</h2> + <?php include("ressources/showmsg.inc"); ?> + <h3>Vous êtes déjà inscrit ?</h3> + <p>Authentifiez-vous :</p> + <?php + if($msg !== null) + echo '<p class="message warning">'.htmlspecialchars($msg).'</p>'; + ?> + <form name="loginform" method="POST" action="login.php?return=<?php echo $location; ?>"> + <table class="logintbl"> + <tr> + <td> + <label for="loginid"> Identifiant&nbsp;:</label> + </td> + <td> + <input name="loginid" type="text" /><br /> + </td> + </tr> + <tr> + <td> + <label for="loginpswd"> Mot de passe&nbsp;: </label> + </td> + <td> + <input name="loginpswd" type="password" /> + </td> + </tr> + <tr> + <td> + </td> + <td> + <input type="submit" name="loginsubmit" value="Valider" /> + </td> + </tr> + </table> + </form> + <h3>Vous ne disposez pas encore d'un compte ?</h3> + <p><a href="signup.php?return=<?php echo $location; ?>">Inscrivez-vous</a> dès maintenant !</p> </div> + <?php include("ressources/footer.inc"); ?> </body> - </html> +</html> diff --git a/code/serveur/php/pticlic.php b/code/serveur/php/pticlic.php @@ -75,11 +75,16 @@ if ($action == 3) { /** Selectionne aléatoirement un noeud. */ -function random_node() +function random_center_node() { global $db; + return $db->querySingle("select eid from random_center_node where rowid = (abs(random()) % (select max(rowid) from random_center_node))+1;"); +} - return $db->querySingle("select eid from node where eid = (abs(random()) % (select max(eid) from node))+1 or eid = (select max(eid) from node where eid > 0) order by eid limit 1;"); +function random_cloud_node() +{ + global $db; + return $db->querySingle("select eid from random_cloud_node where rowid = (abs(random()) % (select max(rowid) from random_cloud_node))+1;"); } @@ -99,7 +104,6 @@ function cg_build_result_sets($cloudSize, $centerEid, $r1, $r2) // Le select doit ranvoyer trois colonnes : // eid => l'eid du mot à mettre dans le nuage, // r1 => la probabilité pour que le mot soit dans r1, entre -1 et 1 (négatif = ne devrait pas y être, positif = devrait y être à coup sûr, 0 = on sait pas). - // TODO : comment mettre un poids sur random, sachant qu'il ne peut / devrait pas être dans ces select, mais plutôt un appel à random_node() ? $typer1r2 = "type in ($r1, $r2)"; $sources = array( // Voisins 1 saut du bon type (= relations déjà existantes) @@ -153,7 +157,7 @@ function cg_build_result_sets($cloudSize, $centerEid, $r1, $r2) for ($i = 0; $i < 10; $i++) { - $sources[$k]['resultSet'][] = array('eid'=>random_node(), 'r1'=>0, 'r2'=>0, 'r0'=>0, 'trash'=>1); + $sources[$k]['resultSet'][] = array('eid'=>random_cloud_node(), 'r1'=>0, 'r2'=>0, 'r0'=>0, 'trash'=>1); $sources[$k]['rsSize']++; } } @@ -254,7 +258,7 @@ function cg_build_cloud($cloudSize, $sources, $sumWeights) while ($i < $cloudSize) { $totalDifficulty += $sources['rand']['d']; - $cloud[$i] = array('pos'=>$i++, 'd'=>$sources['rand']['d'], 'eid'=>random_node(), 'probaR1'=>$res['r1'], 'probaR2'=>$res['r2'], 'probaR0'=>$res['r0'], 'probaTrash'=>$res['trash']); + $cloud[$i] = array('pos'=>$i++, 'd'=>$sources['rand']['d'], 'eid'=>random_cloud_node(), 'probaR1'=>$res['r1'], 'probaR2'=>$res['r2'], 'probaR0'=>$res['r0'], 'probaTrash'=>$res['trash']); } return array($cloud, $totalDifficulty); @@ -338,6 +342,26 @@ function randomGame() return $gid; } +function format_word($word) { + global $db; + + $res = ""; + $stack = array(); + while (($pos = strpos($word, ">")) !== false) { + $res .= substr($word,0,$pos) . " ("; + $eid = intval(substr($word,$pos+1)); + if ($eid == 0) mDie(7, "Erreur lors du suivi des pointeurs de spécialisation du mot $word."); + if (in_array($eid, $stack)) mDie(8, "Boucle rencontrée lors du suivi des pointeurs de spécialisation du mot $word."); + if (count($stack) > 10) mDie(9, "Trop de niveaux de récursions lors du suivi des pointeurs de spécialisation du mot $word."); + $stack[] = $eid; + $word = $db->querySingle("select name from node where eid = $eid"); + } + $res .= $word; + for ($depth = count($stack); $depth > 0; $depth--) { + $res .= ')'; + } + return $res; +} /** Formate une partie en JSON en l'imprimant. * @param game_id : L'identifiant d'une partie. @@ -355,7 +379,7 @@ function game2json($game_id) $game = $game->fetchArray(); echo '{"gid":'.$game_id.',"pgid":'.$pgid.',"cat1":'.$game['relation_1'].',"cat2":'.$game['relation_2'].',"cat3":0,"cat4":-1,'; - echo '"center":{"id":'.$game['eid_central_word'].',"name":'.json_encode(''.$game['name_central_word']).'},'; + echo '"center":{"id":'.$game['eid_central_word'].',"name":'.json_encode(''.format_word($game['name_central_word'])).'},'; echo '"cloudsize":10,"cloud":['; // TODO ! compter dynamiquement. $res = $db->query("select eid_word,(select name from node where eid=eid_word) as name_word from game_cloud where gid = ".$game_id.";"); @@ -368,7 +392,7 @@ function game2json($game_id) else $notfirst=true; - echo '{"id":'.$x['eid_word'].',"name":'.json_encode("".$x['name_word']).'}'; + echo '{"id":'.$x['eid_word'].',"name":'.json_encode("".format_word($x['name_word'])).'}'; } echo "]}"; @@ -400,7 +424,7 @@ function createGameCore($cloudSize) global $db; // select random node - $centerEid = random_node(); + $centerEid = random_center_node(); $r1 = cg_choose_relations(); $r2 = $r1[1]; $r1 = $r1[0]; $sources = cg_build_result_sets($cloudSize, $centerEid, $r1, $r2); $sumWeights = $sources[1]; $sources = $sources[0]; diff --git a/code/serveur/php/ressources/footer.html b/code/serveur/php/ressources/footer.html @@ -1,23 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> - <head> - <title>PtiClic sous Android -Version Alpha - Pied de page</title> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <link rel="stylesheet" href="ressources/simple.css" /> - </head> - <body> - <p>Les concepteurs du jeu&nbsp;: - <a href="http://www.lirmm.fr/~lafourcade/index2.html">Mathieu LAFOURCADE</a> et - <a href="http://w3.u-grenoble3.fr/zampa/index.html">Virginie ZAMPA</a> - - <a href="http://www.lirmm.fr/pticlic/pticlic.php?about=1">L'histoire du PtiClic</a> - - <a href="http://www.lirmm.fr/pticlic/pticlic.php">Jouer au PtiClic sur un ordinateur</a> - - <a href="http://www.lirmm.fr/jeuxdemots/jdm-accueil.php">Jeux de mots</a> - - <a href="http://www.univ-montp2.fr/">Université Montpellier II</a> - - <a href="http://www.lirmm.fr/"> - Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier</a> - - <a href="contact.php">Nous contacter</a> - </p> - - </body> - </html> -\ No newline at end of file diff --git a/code/serveur/php/ressources/footer.inc b/code/serveur/php/ressources/footer.inc @@ -0,0 +1,12 @@ + <div class="footer"> + <p>Les concepteurs du jeu&nbsp;: + <a href="http://www.lirmm.fr/~lafourcade/index2.html">Mathieu LAFOURCADE</a> et + <a href="http://w3.u-grenoble3.fr/zampa/index.html">Virginie ZAMPA</a> - + <a href="http://www.lirmm.fr/pticlic/pticlic.php?about=1">L'histoire du PtiClic</a> - + <a href="http://www.lirmm.fr/pticlic/pticlic.php">Jouer au PtiClic sur un ordinateur</a> - + <a href="http://www.lirmm.fr/jeuxdemots/jdm-accueil.php">Jeux de mots</a> - + <a href="http://www.univ-montp2.fr/">Université Montpellier II</a> - + <a href="http://www.lirmm.fr/">Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier</a> - + <a href="contact.php">Nous contacter</a> + </p> + </div> +\ No newline at end of file diff --git a/code/serveur/php/ressources/locations.inc b/code/serveur/php/ressources/locations.inc @@ -0,0 +1,26 @@ +<?php + +$location_list['download'] = "download.php"; +$location_list['index'] = "index.php"; +$location_list['contact'] = "contact.php"; +$location_list['createGame'] = "createGame.php"; +$location_list['login'] = "login.php"; +$location_list['signup'] = "signup.php"; + +function return_to($location, $params = "") { + global $location_list; + if (array_key_exists($location,$location_list)) { + header("location:".$location_list[$location].$params); + } else { + header("location:index.php?show_msg=err_index_redirect"); + } +} + +function getlocation() { + if(isset($_GET['return']) && preg_match('/^[a-zA-Z0-9_]*$/', $_GET['return'])) + return $_GET['return']; + else + return "index"; +} + +?> +\ No newline at end of file diff --git a/code/serveur/php/ressources/menu.html b/code/serveur/php/ressources/menu.html @@ -1,19 +0,0 @@ -<h1>PtiClic <span class="android">sous Android™</span> - Version 0.1 Alpha</h1> - -<span id="links"> - <a href="index.php">Accueil</a> - <a href="download.php">Téléchargement</a> - <!-- <a href=".php">Créer des parties</a> --> - <a href="contact.php">Contact</a> -<?php -if(!isset($_SESSION['userId'])) // Menu hors connexion. -{?> - <a id="cnx" "href="login.php">Se connecter</a> - <a id="cnx" href="signup.php">S'incrire</a> - -<?php } -else // Menu une fois connecté. -{?> - <a id="cnx" href="login.php?d=true">Se deconnecter</a> -<?php } ?> -</span> diff --git a/code/serveur/php/ressources/menu.inc b/code/serveur/php/ressources/menu.inc @@ -0,0 +1,21 @@ + <div class="menu"> + <h1>PtiClic <span class="android">sous Android™</span> - Version 0.1 Alpha</h1> + + <span id="links"> + <a href="index.php">Accueil</a> + <a href="download.php">Téléchargement</a> + <!-- <a href=".php">Créer des parties</a> --> + <a href="contact.php">Contact</a> + <?php + if(!isset($_SESSION['userId'])) // Menu hors connexion. + {?> + <a id="cnx" href="login.php">Se connecter</a> + <a id="cnx" href="signup.php">S'incrire</a> + + <?php } + else // Menu une fois connecté. + {?> + <a id="cnx" href="login.php?d=true">Se deconnecter</a> + <?php } ?> + </span> + </div> +\ No newline at end of file diff --git a/code/serveur/php/ressources/showmsg.inc b/code/serveur/php/ressources/showmsg.inc @@ -0,0 +1,26 @@ +<?php + +require_once("ressources/strings.inc"); + +function showmsg() { + global $strings; + if (isset($_GET['show_msg'])) { + $msg = $_GET['show_msg']; + $errmsg = false; + if (array_key_exists($msg, $strings)) { + $errmsg = preg_match('/^err_/', $msg); + $msg = $strings[$msg]; + } else { + $errmsg = true; + $msg = $strings['err_index_invalid_msg']; + } + if($errmsg) + echo '<p class="message warning">'.htmlspecialchars($msg).'</p>'; + else + echo '<p class="message success">'.htmlspecialchars($msg).'</p>'; + } +} + +showmsg(); + +?> +\ No newline at end of file diff --git a/code/serveur/php/ressources/simple.css b/code/serveur/php/ressources/simple.css @@ -24,12 +24,21 @@ .footer { margin: 0; - padding: 0.5em; + padding: 0.7em; border-top: thin solid grey; border-bottom: thin solid grey; background-color : #FFFFE0; - font-size: x-small; - text-align: center + font-size: 75%; + text-align: center +} + +.footer p { + margin: 0; +} + +.footer a, +.footer a:visited { + color: black; } .content { @@ -49,7 +58,6 @@ } .logintbl td, .contactbl td, .signuptbl td { - width : 50%; text-align : right; padding-left : 5px; padding-right : 5px; @@ -72,7 +80,8 @@ html, body { h1 { color: #8b4; - margin : 5px; + margin : 0; + padding: 0.2em 0.5em; } h2 { @@ -92,13 +101,14 @@ h5 { } a { - color: black; + color: darkgreen; } a:visited { - color: #543; + color: #765; } +.footer a:hover, a:hover { color: #c86; } @@ -122,10 +132,8 @@ h2#tache-description { } .message { - width : 40%; - display : block; - padding : 5px; - padding-left : 30px; + display : inline-block; + padding : 5px 30px; margin-top : 10px; margin-bottom : 10px; margin-right : 6%; @@ -133,21 +141,21 @@ h2#tache-description { } .warning { - border : 1px dashed red; + border : 1px dashed red; background-color : #F0C060 } .success { - border : 1px dashed red; - background-color : #90FF90 + border : 1px dashed red; + background-color : #90FF90 } #downloadlink { color : black; text-decoration : none; font-size : 16pt; - background-color: #8888ff; - border: medium solid blue; + background-color: #ccccff; + border: medium solid #5555ff; border-radius: 1em; -moz-border-radius: 1em; -webkit-border-radius: 1em; @@ -157,7 +165,9 @@ h2#tache-description { } #downloadlink:hover { - background-color: red; + background-color: #5555ff; + color: white; + border-color: #ccccff; } .downloadarea { @@ -167,9 +177,9 @@ h2#tache-description { } #cnx { - float : right + float : right } .android { - font-size: 70%; + font-size: 70%; } diff --git a/code/serveur/php/ressources/strings.inc b/code/serveur/php/ressources/strings.inc @@ -0,0 +1,35 @@ +<?php + +// Chaque nom de chaîne est de la forme /^(err|ok)_nompage_nommessage$/ + +$strings['err_contact_open_mailfile'] = "Erreur lors de l'ouverture du fichier d'enregistrement de mails."; +$strings['ok_contact_msg_sent'] = "Votre message à été envoyé, nous vous remercions pour vos commentaires."; +$strings['err_contact_fill_all'] = "Veuillez remplir tout les champs."; + +$strings['err_creategame_fill_all'] = "Tous les mots du nage ne sont pas renseignés."; + +$strings['err_index_invalid_msg'] = "Paramètre de la requête invalide. Merci de nous signaler le problème."; +$strings['err_index_redirect'] = "Erreur de redirection. Merci de nous signaler le problème."; + +$strings['ok_login_disconnect'] = "Vous avez été déconnecté."; +$strings['err_login_bad_user_pass'] = "Mauvais nom d'utilisateur ou mot de passe"; +$strings['err_login_fill_all'] = "Veuillez remplir tous les champs."; +$strings['err_login_dbopen'] = "Erreur lors de l'ouverture de la base de données SQLite3. Merci de nous signaler le problème."; + +$strings['err_signup_dbopen'] = "Erreur lors de l'ouverture de la base de données SQLite3. Merci de nous signaler le problème."; +$strings['err_signup_fill_mail'] = "Veuillez renseigner le champ 'Saisir votre adresse mail'."; +$strings['err_signup_invalid_mail'] = "Adresse mail invalide. Vous pouvez utiliser des lettres, des chiffres et les caractères spéciaux '-', '+', '_' et '.' ."; +$strings['err_signup_existing_mail'] = "L'adresse mail saisie existe déjà ! Veuillez nous contacter si vous avez oublié votre identifiant et/ou votre mot de passe."; +$strings['err_signup_fill_login'] = "Veuillez renseigner le champ 'Choisir un identifiant'."; +$strings['err_signup_invalid_login'] = "Identifiant invalide. Vous pouvez utiliser des lettres, des chiffres et les caractères spéciaux '-', '_' et '.' ."; +$strings['err_signup_existing_login'] = "Identifiant déjà pris ! Veuillez choisir un autre identifiant."; +$strings['err_signup_fill_passwd1'] = "Veuillez renseigner le champ 'Mot de passe'."; +$strings['err_signup_invalid_passwd1'] = "Mot de passe invalide. Votre mot de passe doit comporter au moins 5 caractères."; +$strings['err_signup_fill_passwd2'] = "Veuillez renseigner le champ 'Resaisir le mot de passe'."; +$strings['err_signup_passwords_dont_match'] = "Les deux mots de passe saisis ne sont pas identiques."; +$strings['ok_signup_registered'] = "L'inscription s'est déroulée avec succès."; +$strings['err_signup_dbinsert'] = "Une erreur interne est survenue lors de l'inscription, merci de nous signaler le problème."; + +$strings['err_download_notauth'] = "Pour accéder à la page de téléchargement de l\'application vous devez être authentifié." + +?> +\ No newline at end of file diff --git a/code/serveur/php/signup.php b/code/serveur/php/signup.php @@ -1,206 +1,190 @@ <?php session_start(); +require_once("ressources/strings.inc"); +require_once("ressources/locations.inc"); + $SQL_DBNAME = (dirname(__FILE__) . "/db"); - if (!$db = new SQlite3($SQL_DBNAME)) - mDie(1,"Erreur lors de l'ouverture de la base de données SQLite3"); + if (!$db = new SQlite3($SQL_DBNAME)) + die($strings['err_signup_dbopen']); + +$location = getlocation(); $newpage = true; -if(!isset($msg)){ - $msg = array(); -} +$msg = array(); + if(isset($_POST['signupemail'])){ - $newpage = false; - $signupemail = $_POST['signupemail']; - $pattern = "/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/"; - - if(trim($signupemail) == ""){ - $msg[] = "Veuillez renseigner le champ 'Saisir votre adresse mail'."; - unset($_POST['signupemail']); - $signupemail = ""; - } - else if (!preg_match($pattern, $signupemail)){ - $msg[] = "Adresse mail invalide. Vous pouvez utiliser des lettres, des chiffres et - les caractères spéciaux '-', '_' et '.'"; - $signupemail = $_POST['signupemail']; - unset($_POST['signupemail']); - $signupemail = ""; - } - else if ($db->querySingle("SELECT mail FROM user WHERE mail='$signupemail'") != null){ - $msg[] = "L'adresse mail saisie existe déjà ! Veuillez nous contacter si vous avez - oublier votre identifiant et/ou votre mot de passe."; - unset($_POST['signupemail']); - $signupemail = ""; - } + $newpage = false; + $signupemail = $_POST['signupemail']; + // Regexp pour les adresses mail (incomplet, mais suffisant pour la plupart des adresses). + // http://en.wikipedia.org/wiki/Email_address + // N'implémente pas les "quotes" dans la partie locale (avant le @). + $allowed_local = "[-a-zA-Z0-9!#\$%&'*+/^=?_`{|}~]"; /* Je ne sais pas trop si l'espace est autorisée. */ + $pattern_local = "$allowed_local(\\.?$allowed_local)*"; + $pattern_hostname_label = '[a-zA-Z0-9]([-a-zA-Z0-9]*[a-zA-Z0-9])?'; + $pattern_hostname = "$pattern_hostname_label(\\.$pattern_hostname_label)*"; + $pattern_ip = "([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])"; + $pattern_host = "($pattern_hostname|\\[$pattern_ip\\])"; + // Note : j'ai utilisé ";" comme délimiteur de regexp car il y a un slash dans $allowed_local, et je ne sais pas comment l'échapper là + $pattern = ";^$pattern_local@$pattern_host\$;"; + + if(trim($signupemail) == ""){ + $msg[] = $strings['err_signup_fill_mail']; + } + else if (!preg_match($pattern, $signupemail)){ + // TODO : ce message est erroné. + $msg[] = $strings['err_signup_invalid_mail']; + } + else if ($db->querySingle("SELECT mail FROM user WHERE mail='$signupemail'") != null){ + $msg[] = $strings['err_signup_existing_mail']; + } } if(isset($_POST['signupid'])){ - $newpage = false; + $newpage = false; $signupid = $_POST['signupid']; - $pattern = "/^([a-zA-Z0-9])+([\.\-_][a-zA-Z0-9]*)*/"; - if(trim($signupid) == ""){ - $msg[] = "Veuillez renseigner le champ 'Choisir un identifiant'.\n"; - unset($_POST['signupid']); - $signupid = ""; - } - else if (!preg_match($pattern, $signupemail)){ - $msg[] = "Identifiant invalid. Vous pouvez utiliser des lettres, des chiffres et - les caractères spéciaux '-', '_' et '.'\n"; - $signupid = $_POST['signupid']; - unset($_POST['signupid']); - $signupid = ""; - } - else if ($db->querySingle("SELECT login FROM user WHERE login='$signupid'") != null){ - $msg[] = "Identifiant déjà pris ! Veuillez choisir un autre identifiant."; - unset($_POST['signupid']); - $signupid = ""; - } + $pattern = "/^([a-zA-Z0-9])+([\.\-_][a-zA-Z0-9]*)*/"; + if(trim($signupid) == ""){ + $msg[] = $strings['err_signup_fill_login']; + } + else if (!preg_match($pattern, $signupid)){ + $msg[] = $strings['err_signup_invalid_login']; + $signupid = $_POST['signupid']; + } + else if ($db->querySingle("SELECT login FROM user WHERE login='$signupid'") != null){ + $msg[] = $strings['err_signup_existing_login']; + } } if(isset($_POST['signuppswd1'])){ - $newpage = false; - $signuppswd1 = $_POST['signuppswd1']; - if(trim($signuppswd1) == ""){ - $msg[] = "Veuillez renseigner le champ 'Mot de passe'.\n"; - unset($_POST['signuppswd1']); - $signuppswd1 = ""; - unset($_POST['signuppswd2']); - $signuppswd2 = ""; - } - else if(strlen($signuppswd1) < 5){ - $msg[] = "Mot de passe invalide. Votre mot de passe doit comporter au moins 5 caractères.\n"; - unset($_POST['signuppswd1']); - $signuppswd1 = ""; - unset($_POST['signuppswd2']); - $signuppswd2 = ""; - } + $newpage = false; + $signuppswd1 = $_POST['signuppswd1']; + if(trim($signuppswd1) == ""){ + $msg[] = $strings['err_signup_fill_passwd1']; + } + else if(strlen($signuppswd1) < 5){ + $msg[] = $strings['err_signup_invalid_passwd1']; + } } if(isset($_POST['signuppswd2'])){ - $newpage = false; - $signuppswd2 = $_POST['signuppswd2']; - if(trim($signuppswd2) == ""){ - $msg[] = "Veuillez renseigner le champ 'Resaisir le mot de passe'.\n"; - unset($_POST['signuppswd1']); - $signuppswd1 = ""; - unset($_POST['signuppswd2']); - $signuppswd2 = ""; - } - if(strlen($signuppswd1 != $signuppswd2)){ - $msg[] = "Les deux mots de passe saisis ne sont pas identiques.\n"; - unset($_POST['signuppswd1']); - $signuppswd1 = ""; - unset($_POST['signuppswd2']); - $signuppswd2 = ""; - } + $newpage = false; + $signuppswd2 = $_POST['signuppswd2']; + if(trim($signuppswd2) == ""){ + $msg[] = $strings['err_signup_fill_passwd2']; + } + if(strlen($signuppswd1 != $signuppswd2)){ + $msg[] = $strings['err_signup_passwords_dont_match']; + } } -?> - -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +if(count($msg) == 0 && $newpage == false) +{ + $ok = ($db->query("INSERT INTO user(mail, login, hash_passwd, score) VALUES ('" . SQLite3::escapeString($signupemail) + . "', '" . SQLite3::escapeString($signupid) + . "', '" . SQLite3::escapeString(md5($signuppswd1)) + . "', 0);")); + + if($ok == true) { + $_SESSION['userId'] = $signupid; + return_to($location, "?show_msg=ok_signup_registered"); + } else { + $msg[] = $strings['err_signup_dbinsert']; + } +} +?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>PtiClic sous Android - Version Alpha - Inscription</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="ressources/simple.css" /> </head> - - - <body> - <div class="menu"> - <?php include("ressources/menu.html"); ?> - </div> + <body> + <?php include("ressources/menu.inc"); ?> <div class="content"> - <p>Vous n'êtes pas encore inscrit&nbsp;? Inscrivez-vous&nbsp;:</p> - <?php - if(sizeof($msg) > 0){ - echo '<span class="message warning">'. - "<b>Saisie invalide. Les erreurs sont les suivantes : </b> <p>". - "<ul>"; - foreach ($msg as $m) { - echo "<li>".$m; - } - echo "</ul>"; - } - else if($newpage == false){ - $ok = ($db->query("INSERT INTO user(mail, login, hash_passwd, score) VALUES ('" . SQLite3::escapeString($signupemail) - . "', '" . SQLite3::escapeString($signupid) - . "', '" . SQLite3::escapeString(md5($signuppswd1)) - . "', 0);")); - - if($ok == true) - echo "insertion worked!!!!!"; - else - echo "insertion failed!!!"; - //header("location:".$location); - echo '<span class="message success">'."Inscription s'est déroulée avec succès !"; - unset($_POST); - $newpage = true; - } - - echo '</span>'; - ?> - <form name="signupform" method="post" action="signup.php?return=<?php echo $location; ?>"> - <table class="signuptbl"> - <tr> - <td> - <label for="signupemail">Saisir votre adresse mail&nbsp;:</label> - </td> - <td> - <input name="signupemail" type="text" - <?php - if(isset($_POST['signupemail'])){ - echo "value='$signupemail'"; - } - ?> - /><br /> - </td> - </tr> - <tr> - <td> - <label for="signupid">Choisir un identifiant&nbsp;: </label> - </td> - <td> - <input name="signupid" type="text" - <?php - if(isset($_POST['signupid'])){ - echo "value='$signupid'"; - } - ?> - /> - </td> - </tr> - <tr> - <td> - <label for="signuppswd1">Choisir un mot de passe&nbsp;: </label> - </td> - <td> - <input name="signuppswd1" type="password" /> - </td> - </tr> - <tr> - <td> - <label for="signuppswd2">Resaisir le mot de passe&nbsp;: </label> - </td> - <td> - <input name="signuppswd2" type="password" /> - </td> - </tr> - <tr> - <td> - - </td> - <td> - <input type="submit" name="signupsubmit" value="Valider" /> - </td> - </tr> - </table> - </form> - </div> - - <div class="footer"> - <?php include("ressources/footer.html"); ?> + <h2>Inscription</h2> + <?php include("ressources/showmsg.inc"); ?> + <h3>Vous n'avez pas encore de compte ?</h3> + <p> + Inscrivez-vous pour accéder l'ensemble du site et faire parti des alpha-testeurs ! <br /> + Vous pourrez ainsi télécharger l'application la tester et nous faire part de vos remarques afin de l'améliorer.<br /> + </p> + <p> + Pour vous inscrire maintenant veuillez remplir le formulaire qui suit : + </p> + <?php + if(count($msg) > 0) + { + echo '<div class="message warning">'. + '<p><b>Saisie invalide. Les erreurs sont les suivantes : </b></p>'. + '<ul>'; + foreach ($msg as $m) { + echo "<li>".htmlspecialchars($m)."</li>"; + } + echo '</ul>'; + echo '</div>'; + } + ?> + <form name="signupform" method="post" action="signup.php?return=<?php echo $location; ?>"> + <table class="signuptbl"> + <tr> + <td> + <label for="signupemail">Saisir votre adresse mail&nbsp;:</label> + </td> + <td> + <input name="signupemail" type="text" + <?php + if(isset($_POST['signupemail'])){ + echo " value='$signupemail'"; + } + ?> + /> + </td> + </tr> + <tr> + <td> + <label for="signupid">Choisir un identifiant&nbsp;: </label> + </td> + <td> + <input name="signupid" type="text" + <?php + if(isset($_POST['signupid'])){ + echo " value='$signupid'"; + } + ?> + /> + </td> + </tr> + <tr> + <td> + <label for="signuppswd1">Choisir un mot de passe&nbsp;: </label> + </td> + <td> + <input name="signuppswd1" type="password" /> + </td> + </tr> + <tr> + <td> + <label for="signuppswd2">Resaisir le mot de passe&nbsp;: </label> + </td> + <td> + <input name="signuppswd2" type="password" /> + </td> + </tr> + <tr> + <td> + + </td> + <td> + <input type="submit" name="signupsubmit" value="Valider" /> + </td> + </tr> + </table> + </form> + <h3>Vous êtes déjà inscrit ?</h3> + <p><a href="login.php?return=<?php echo $location; ?>">Connectez-vous !</a></p> </div> + <?php include("ressources/footer.inc"); ?> </body> - </html> +</html>