This commit is contained in:
Bertrand BRUN 2011-02-25 07:25:45 +01:00
commit 928c8efb7a
18 changed files with 596 additions and 486 deletions

View File

@ -3,22 +3,35 @@
# cat dump.url # cat dump.url
# Aller à cette adresse, et télécharger le dernier dump # Aller à cette adresse, et télécharger le dernier dump
echo echo
echo "Étape 1/3 : Téléchargement" echo "Étape 1/5 : Téléchargement de la version du dump"
echo "==========================" 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/')" 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" wget -c 'http://www.lirmm.fr/~lafourcade/JDM-LEXICALNET-FR/'"$latest"
echo echo
echo "Étape 2/3 : Conversion vers sql" echo "Étape 3/5 : Conversion vers sql"
echo "===============================" echo "==============================="
./dump2sqlite.sh "$latest" > sql ./dump2sqlite.sh "$latest" > sql
echo echo
echo "Étape 3/3 : Insertion dans la bdd" echo "Étape 4/5 : Insertion dans la bdd"
echo "=================================" echo "================================="
mv php/db php/db.old [ -e php/db ] && mv php/db php/db.old
pv sql | sqlite3 php/db 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 664 php/db
chmod 775 php chmod 775 php

View File

@ -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 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(pgid integer primary key autoincrement, gid, login, timestamp);
create table played_game_cloud(pgid, gid, type, num, relation, weight, score); 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); 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 EOF
# tr : pour virer le CRLF qui traîne # tr : pour virer le CRLF qui traîne
@ -56,4 +51,25 @@ cat "$1" \
| grep -v '^//' \ | grep -v '^//' \
| 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

View File

@ -1 +1,2 @@
db.old db.old
log.txt

View File

@ -1,9 +1,11 @@
<?php <?php
require_once("ressources/strings.inc");
session_start(); session_start();
$displayForm = true; $displayForm = true;
$emailaddress = ""; $emailaddress = "";
$mailfile = "mails.txt"; $mailfile = "mails.txt";
$msg = null;
function writemail($filename,$email,$subject,$message) 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); fprintf($file,"%s\n%s\n%s\n\n",$email,$subject,$message);
} }
else else
die("Erreur lors de l'ouverture du fichier d'enregistrement de mails"); die($strings['err_contact_open_mailfile']);
fclose($file); fclose($file);
} }
@ -22,35 +24,30 @@ function writemail($filename,$email,$subject,$message)
if(isset($_POST['email']) && isset($_POST['subject']) && isset($_POST['message'])) if(isset($_POST['email']) && isset($_POST['subject']) && isset($_POST['message']))
if(!empty($_POST['email']) && !empty($_POST['subject']) && !empty($_POST['message'])) if(!empty($_POST['email']) && !empty($_POST['subject']) && !empty($_POST['message']))
{ {
$from = $_POST['email']; $from = $_POST['email'];
$subject = $_POST['subject']; $subject = $_POST['subject'];
$header = 'From: '.$from . "\r\n" . $header = 'From: '.$from . "\r\n" .
'Reply-To: '.$from . "\r\n" . 'Reply-To: '.$from . "\r\n" .
'X-Mailer: PHP/' . phpversion(); 'X-Mailer: PHP/' . phpversion();
$dest = $emailaddress; $dest = $emailaddress;
$message = str_replace("\r\n","\n",$_POST['message']); $message = str_replace("\r\n","\n",$_POST['message']);
writemail($mailfile,$from,$subject,$message); writemail($mailfile,$from,$subject,$message);
/*if(mail($dest,$subject,$message,$header)) /*if(mail($dest,$subject,$message,$header))
{ {
$notif = "Votre email à été envoyé"; $msg = $strings['ok_msg_sent'];
$displayForm = false; $displayForm = false;
}
else
$notif = "Une erreur s'est produite lors de l'envoi du message";*/
$notif = "Votre email à été envoyé";
} }
else
$msg = "Une erreur s'est produite lors de l'envoi du message";*/
$msg = $strings['ok_msg_sent'];
}
else 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"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head> <head>
<title>Titre</title> <title>Titre</title>
@ -58,64 +55,64 @@ if(isset($_POST['email']) && isset($_POST['subject']) && isset($_POST['message']
<link rel="stylesheet" href="ressources/simple.css" /> <link rel="stylesheet" href="ressources/simple.css" />
</head> </head>
<body> <body>
<div class="menu"> <?php include("ressources/menu.inc"); ?>
<?php include("ressources/menu.html"); ?>
</div>
<div class="content"> <div class="content">
<?php include("ressources/showmsg.inc"); ?>
<h2>Contact</h2>
<?php <?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) if($displayForm == true)
echo '<span class="message warning">'.$notif.'</span>'; { // Fin sous le <form> ci-dessous
else ?>
echo '<span class="message success">'.$notif.'</span>'; <p>
Vous souhaitez signaler un défaut dans l'application, ou bien vous avez des remarques, des suggestions ?<br />
if($displayForm == true) Faites nous en part en nous envoyant un message par le biais du formulaire qui suit :
{ </p>
?> <form action="contact.php" method="POST">
<form action="contact.php" method="POST"> <table class="contacttbl">
<table class="contacttbl"> <tr>
<tr> <td>
<td> <label for="email">Votre e-mail : </label>
<label for="email">Votre e-mail : </label> </td>
</td> <td>
<td> <input type="text" id="email" name="email" />
<input type="text" id="email" name="email" /> </td>
</td> </tr>
</tr> <tr>
<tr> <td>
<td> <label for="subject">Objet du mail : </label>
<label for="subject">Objet du mail : </label> </td>
</td> <td>
<td> <input type="text" id="subject" name="subject" />
<input type="text" id="subject" name="subject" /> </td>
</td> </tr>
</tr> <tr>
<tr> <td>
<td> <label for="message">Votre message : </label>
<label for="message">Votre message : </label> </td>
</td> <td>
<td> <textarea class="txMessage" id="message" name="message"></textarea>
<textarea class="txMessage" id="message" name="message"></textarea> </td>
</td> </tr>
</tr> <tr>
<tr> <td>
<td>
</td>
</td> <td>
<td> <span class="btSubmit"><input type="submit" value="Envoyer le message" /></span>
<span class="btSubmit"><input type="submit" value="Envoyer le message" /></span> </td>
</td> </tr>
</tr> </table>
</table> </form>
</form> <?php
<?php } // Fin de if($displayForm == true)
}
?> ?>
</div> </div>
<div class="footer"> <?php include("ressources/footer.inc"); ?>
<?php include("ressources/footer.html"); ?>
</div>
</body> </body>
</html><?php </html>
?>

View File

@ -1,4 +1,5 @@
<?php <?php
require_once("ressources/strings.inc");
session_start(); session_start();
$err = false; $err = false;
@ -10,18 +11,12 @@ if(isset($_POST['nbcloudwords']))
for($i = 0; $i < $nbword; $i++) for($i = 0; $i < $nbword; $i++)
if(!isset($_POST['word'.$i]) || empty($_POST['word'.$i])) { if(!isset($_POST['word'.$i]) || empty($_POST['word'.$i])) {
$err = true; $err = true;
$msg = "Tous les mots du nage ne sont pas renseignés"; $msg = $strings['err_creategame_fill_all'];
} }
if($err == false) 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"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head> <head>
<title>PtiClic Android - Création de partie</title> <title>PtiClic Android - Création de partie</title>
@ -29,30 +24,28 @@ $state = 0;
<link rel="stylesheet" href="ressources/simple.css" /> <link rel="stylesheet" href="ressources/simple.css" />
</head> </head>
<body> <body>
<div class="menu"> <?php include("ressources/menu.inc"); ?>
<?php include("ressources/menu.html"); ?>
</div>
<div class="content"> <div class="content">
<?php include("ressources/showmsg.inc"); ?>
<form action="createGame.php" method="POST"> <form action="createGame.php" method="POST">
<?php <?php
if(!isset($_POST["nbcloudwords"])) { if(!isset($_POST["nbcloudwords"]))
echo '<input type="text" name="nbcloudwords" />'; {
echo '<input type="submit" value="suivant" />'; echo '<input type="text" name="nbcloudwords" />';
} echo '<input type="submit" value="suivant" />';
else { }
echo '<input type="text" name="centralword" />'; else
{
for($i = 0; $i < $_POST['nbcloudwords']; $i++) echo '<input type="text" name="centralword" />';
echo '<input type="text" name="word'.$i.'" />';
for($i = 0; $i < $_POST['nbcloudwords']; $i++)
echo '<input type="submit" value="Enregistrer la partie" />'; echo '<input type="text" name="word'.$i.'" />';
}
?> echo '<input type="submit" value="Enregistrer la partie" />';
}
?>
</form> </form>
</div> </div>
<div class="footer"> <?php include("ressources/footer.inc"); ?>
<?php include("ressources/footer.html"); ?>
</div>
</body> </body>
</html> </html>

View File

@ -2,46 +2,40 @@
session_start(); session_start();
if(!isset($_SESSION['userId'])) if(!isset($_SESSION['userId']))
header("location:login.php?return=download.php"); 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">
?><!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"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head> <head>
<title>PtiClic sous Android, version Alpha - Téléchargement</title> <title>PtiClic sous Android, version Alpha - Téléchargement</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="ressources/simple.css" /> <link rel="stylesheet" href="ressources/simple.css" />
</head> </head>
<body> <body>
<div class="menu"> <?php include("ressources/menu.inc"); ?>
<?php include("ressources/menu.html"); ?>
</div>
<div class="content"> <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> <span class="downloadarea"><a href="ressources/pticlic.apk" id="downloadlink">Télécharger</a></span>
<h2>Installation de l'application</h2> <h2>Installation de l'application</h2>
<h3> A partir de votre téléphone </h3> <h3> A partir de votre téléphone </h3>
<ul> <ul>
<li> <a href="ressources/pticlic.apk" />Téléchargez le fichier d'installation</a></li> <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 <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> 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>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> <li> Suivez attentivement les instructions lors du premier démarrage de l'application</li>
</ul> </ul>
<h3> A partir de votre ordinateur </h3> <h3> A partir de votre ordinateur </h3>
<ul> <ul>
<li><a href="ressources/pticlic.apk">Téléchargez le fichier d'installation</a> </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>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 <li>Depuis votre téléphone, retrouvez sur votre carte mémoire l'application que vous
venez de transférer</li> venez de transférer</li>
<li>Cliquez sur l'application afin de l'installer sur votre téléphone</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>Suivez attentivement les instructions lors du premier démarrage de l'application</li>
</ul> </ul>
</div> </div>
<div class="footer"> <?php include("ressources/footer.inc"); ?>
<?php include("ressources/footer.html"); ?>
</div>
</body> </body>
</html> </html>

View File

@ -1,9 +1,6 @@
<?php <?php
session_start(); session_start();
?> ?><!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"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head> <head>
@ -12,41 +9,45 @@ session_start();
<link rel="stylesheet" href="ressources/simple.css" /> <link rel="stylesheet" href="ressources/simple.css" />
</head> </head>
<body> <body>
<div class="menu"> <?php include("ressources/menu.inc"); ?>
<?php include("ressources/menu.html"); ?>
</div>
<div class="content"> <div class="content">
<?php include("ressources/showmsg.inc"); ?>
<h2>Jeu PtiClic - Téléchargement gratuit</h2> <h2>Jeu PtiClic - Téléchargement gratuit</h2>
<p>Vous aimez les jeux de mots&nbsp;? Vous avez un smartphone sous Android&nbsp;? <p>
PtiClic est pour vous&nbsp;!</p> Vous aimez les jeux de mots&nbsp;? Vous avez un smartphone sous Android&nbsp;?
<p>Soyez parmi les tous premiers à <a href="download.php">télécharger cette PtiClic est pour vous&nbsp;!
application gratuitement</a> en devenant Alpha-testeur. </p>
L'<a href="signup.php">inscription</a> est simple, il suffit de fournir <p>
une adresse mail, de créer un identifiant et vous pourrez commencer à jouer&nbsp;!</p> Soyez parmi les tous premiers à <a href="download.php">télécharger cette
<!-- <p>Il ne s'agit pas d'une version d'essai et l'application ne contient aucun application gratuitement</a> en devenant Alpha-testeur.
spyware.</p> --> 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;!
<h2>Le principe du jeu</h2> </p>
<p>Un mot central apparaît ainsi que quatre associations
telles que "synonyme", "antonyme", "est une sorte de", "corbeille"... L'idée est <h2>Le principe du jeu</h2>
de lier de nouveaux mots au mot central à l'aide des associations. <p>
Plus votre réponse est juste, plus vous gagnez de points. Un mot central apparaît ainsi que quatre associations
Attention, vous pouvez aussi perdre des points&nbsp;!</p> 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> <h2>Le développement de l'application</h2>
<p>La version beta du jeu PtiClic sous Android est en cours de développement. <p>
Le projet s'inscrit dans le cadre d'un TER de Master en informatique La version beta du jeu PtiClic sous Android est en cours de développement.
à l'Université Montpellier II sous la direction de Mathieu LAFOURCADE. L'équipe Le projet s'inscrit dans le cadre d'un TER de Master en informatique
de conception et de développement est composée de quatre étudiants&nbsp;: Bertrand BRUN, à l'Université Montpellier II sous la direction de Mathieu LAFOURCADE. L'équipe
Yoann BONAVERO, John CHARRON et Georges DUPERON. 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> </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> </div>
<?php include("ressources/footer.inc"); ?>
</body> </body>
</html> </html>

View File

@ -1,18 +1,20 @@
<?php <?php
session_start(); session_start();
require_once("ressources/strings.inc");
require_once("ressources/locations.inc");
$msg = null;
if(isset($_POST['loginid']) && !empty($_POST['loginid'])) if(isset($_POST['loginid']) && !empty($_POST['loginid']))
$user = SQLite3::escapeString($_POST['loginid']); $user = SQLite3::escapeString($_POST['loginid']);
if(isset($_POST['loginpswd']) && !empty($_POST['loginpswd'])) if(isset($_POST['loginpswd']) && !empty($_POST['loginpswd']))
$pswd = md5($_POST['loginpswd']); $pswd = md5($_POST['loginpswd']);
if(isset($_GET['return']))
$location = $_GET['return']; $location = getlocation();
else
$location = "index.php";
if(isset($_GET['d']) && $_GET['d'] == "true") { if(isset($_GET['d']) && $_GET['d'] == "true") {
session_destroy(); session_destroy();
header("location:index.php"); return_to($location, "?show_msg=ok_login_disconnect");
} }
if(isset($user) && isset($pswd)) if(isset($user) && isset($pswd))
@ -20,22 +22,20 @@ if(isset($user) && isset($pswd))
$SQL_DBNAME = (dirname(__FILE__) . "/db"); $SQL_DBNAME = (dirname(__FILE__) . "/db");
if (!$db = new SQlite3($SQL_DBNAME)) 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';"))) { 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 else
$msg = "Mauvais nom d'utilisateur ou mot de passe"; $msg = $strings['err_login_bad_user_pass'];
} }
else if(isset($user) or isset($pswd)) else if(isset($user) or isset($pswd))
$msg = "Veuillez remplir tous les champs"; $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">
?><!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"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head> <head>
<title>Titre</title> <title>Titre</title>
@ -43,47 +43,46 @@ else if(isset($user) or isset($pswd))
<link rel="stylesheet" href="ressources/simple.css" /> <link rel="stylesheet" href="ressources/simple.css" />
</head> </head>
<body> <body>
<div class="menu"> <?php include("ressources/menu.inc"); ?>
<?php include("ressources/menu.html"); ?>
</div>
<div class="content"> <div class="content">
<p>Vous êtes déjà inscrit&nbsp;? Authentifiez-vous&nbsp;:</p> <h2>Connexion</h2>
<?php <?php include("ressources/showmsg.inc"); ?>
if(isset($msg)) <h3>Vous êtes déjà inscrit ?</h3>
echo '<span class="message warning">'.$msg.'</span>'; <p>Authentifiez-vous :</p>
?> <?php
<form name="loginform" method="post" action="login.php?return=<?php echo $location; ?>"> if($msg !== null)
<table class="logintbl"> echo '<p class="message warning">'.htmlspecialchars($msg).'</p>';
<tr> ?>
<td> <form name="loginform" method="POST" action="login.php?return=<?php echo $location; ?>">
<label for="loginid"> Identifiant&nbsp;:</label> <table class="logintbl">
</td> <tr>
<td> <td>
<input name="loginid" type="text" /><br /> <label for="loginid"> Identifiant&nbsp;:</label>
</td> </td>
</tr> <td>
<tr> <input name="loginid" type="text" /><br />
<td> </td>
<label for="loginpswd"> Mot de passe&nbsp;: </label> </tr>
</td> <tr>
<td> <td>
<input name="loginpswd" type="password" /> <label for="loginpswd"> Mot de passe&nbsp;: </label>
</td> </td>
</tr> <td>
<tr> <input name="loginpswd" type="password" />
<td> </td>
</tr>
</td> <tr>
<td> <td>
<input type="submit" name="loginsubmit" value="Valider" /> </td>
</td> <td>
</tr> <input type="submit" name="loginsubmit" value="Valider" />
</table> </td>
</form> </tr>
</div> </table>
</form>
<div class="footer"> <h3>Vous ne disposez pas encore d'un compte ?</h3>
<?php include("ressources/footer.html"); ?> <p><a href="signup.php?return=<?php echo $location; ?>">Inscrivez-vous</a> dès maintenant !</p>
</div> </div>
<?php include("ressources/footer.inc"); ?>
</body> </body>
</html> </html>

View File

@ -75,11 +75,16 @@ if ($action == 3) {
/** Selectionne aléatoirement un noeud. /** Selectionne aléatoirement un noeud.
*/ */
function random_node() function random_center_node()
{ {
global $db; 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 : // Le select doit ranvoyer trois colonnes :
// eid => l'eid du mot à mettre dans le nuage, // 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). // 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)"; $typer1r2 = "type in ($r1, $r2)";
$sources = array( $sources = array(
// Voisins 1 saut du bon type (= relations déjà existantes) // 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++) 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']++; $sources[$k]['rsSize']++;
} }
} }
@ -254,7 +258,7 @@ function cg_build_cloud($cloudSize, $sources, $sumWeights)
while ($i < $cloudSize) while ($i < $cloudSize)
{ {
$totalDifficulty += $sources['rand']['d']; $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); return array($cloud, $totalDifficulty);
@ -338,6 +342,26 @@ function randomGame()
return $gid; 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. /** Formate une partie en JSON en l'imprimant.
* @param game_id : L'identifiant d'une partie. * @param game_id : L'identifiant d'une partie.
@ -355,7 +379,7 @@ function game2json($game_id)
$game = $game->fetchArray(); $game = $game->fetchArray();
echo '{"gid":'.$game_id.',"pgid":'.$pgid.',"cat1":'.$game['relation_1'].',"cat2":'.$game['relation_2'].',"cat3":0,"cat4":-1,'; 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. 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.";"); $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 else
$notfirst=true; $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 "]}"; echo "]}";
@ -400,7 +424,7 @@ function createGameCore($cloudSize)
global $db; global $db;
// select random node // select random node
$centerEid = random_node(); $centerEid = random_center_node();
$r1 = cg_choose_relations(); $r2 = $r1[1]; $r1 = $r1[0]; $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]; $sources = cg_build_result_sets($cloudSize, $centerEid, $r1, $r2); $sumWeights = $sources[1]; $sources = $sources[0];

View File

@ -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>

View File

@ -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>

View File

@ -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";
}
?>

View File

@ -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>

View File

@ -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>

View File

@ -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();
?>

View File

@ -24,12 +24,21 @@
.footer { .footer {
margin: 0; margin: 0;
padding: 0.5em; padding: 0.7em;
border-top: thin solid grey; border-top: thin solid grey;
border-bottom: thin solid grey; border-bottom: thin solid grey;
background-color : #FFFFE0; background-color : #FFFFE0;
font-size: x-small; font-size: 75%;
text-align: center text-align: center
}
.footer p {
margin: 0;
}
.footer a,
.footer a:visited {
color: black;
} }
.content { .content {
@ -49,7 +58,6 @@
} }
.logintbl td, .contactbl td, .signuptbl td { .logintbl td, .contactbl td, .signuptbl td {
width : 50%;
text-align : right; text-align : right;
padding-left : 5px; padding-left : 5px;
padding-right : 5px; padding-right : 5px;
@ -72,7 +80,8 @@ html, body {
h1 { h1 {
color: #8b4; color: #8b4;
margin : 5px; margin : 0;
padding: 0.2em 0.5em;
} }
h2 { h2 {
@ -92,13 +101,14 @@ h5 {
} }
a { a {
color: black; color: darkgreen;
} }
a:visited { a:visited {
color: #543; color: #765;
} }
.footer a:hover,
a:hover { a:hover {
color: #c86; color: #c86;
} }
@ -122,10 +132,8 @@ h2#tache-description {
} }
.message { .message {
width : 40%; display : inline-block;
display : block; padding : 5px 30px;
padding : 5px;
padding-left : 30px;
margin-top : 10px; margin-top : 10px;
margin-bottom : 10px; margin-bottom : 10px;
margin-right : 6%; margin-right : 6%;
@ -133,21 +141,21 @@ h2#tache-description {
} }
.warning { .warning {
border : 1px dashed red; border : 1px dashed red;
background-color : #F0C060 background-color : #F0C060
} }
.success { .success {
border : 1px dashed red; border : 1px dashed red;
background-color : #90FF90 background-color : #90FF90
} }
#downloadlink { #downloadlink {
color : black; color : black;
text-decoration : none; text-decoration : none;
font-size : 16pt; font-size : 16pt;
background-color: #8888ff; background-color: #ccccff;
border: medium solid blue; border: medium solid #5555ff;
border-radius: 1em; border-radius: 1em;
-moz-border-radius: 1em; -moz-border-radius: 1em;
-webkit-border-radius: 1em; -webkit-border-radius: 1em;
@ -157,7 +165,9 @@ h2#tache-description {
} }
#downloadlink:hover { #downloadlink:hover {
background-color: red; background-color: #5555ff;
color: white;
border-color: #ccccff;
} }
.downloadarea { .downloadarea {
@ -167,9 +177,9 @@ h2#tache-description {
} }
#cnx { #cnx {
float : right float : right
} }
.android { .android {
font-size: 70%; font-size: 70%;
} }

View File

@ -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é."
?>

View File

@ -1,206 +1,190 @@
<?php <?php
session_start(); session_start();
require_once("ressources/strings.inc");
require_once("ressources/locations.inc");
$SQL_DBNAME = (dirname(__FILE__) . "/db"); $SQL_DBNAME = (dirname(__FILE__) . "/db");
if (!$db = new SQlite3($SQL_DBNAME)) if (!$db = new SQlite3($SQL_DBNAME))
mDie(1,"Erreur lors de l'ouverture de la base de données SQLite3"); die($strings['err_signup_dbopen']);
$location = getlocation();
$newpage = true; $newpage = true;
if(!isset($msg)){ $msg = array();
$msg = array();
}
if(isset($_POST['signupemail'])){ if(isset($_POST['signupemail'])){
$newpage = false; $newpage = false;
$signupemail = $_POST['signupemail']; $signupemail = $_POST['signupemail'];
$pattern = "/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/"; // Regexp pour les adresses mail (incomplet, mais suffisant pour la plupart des adresses).
// http://en.wikipedia.org/wiki/Email_address
if(trim($signupemail) == ""){ // N'implémente pas les "quotes" dans la partie locale (avant le @).
$msg[] = "Veuillez renseigner le champ 'Saisir votre adresse mail'."; $allowed_local = "[-a-zA-Z0-9!#\$%&'*+/^=?_`{|}~]"; /* Je ne sais pas trop si l'espace est autorisée. */
unset($_POST['signupemail']); $pattern_local = "$allowed_local(\\.?$allowed_local)*";
$signupemail = ""; $pattern_hostname_label = '[a-zA-Z0-9]([-a-zA-Z0-9]*[a-zA-Z0-9])?';
} $pattern_hostname = "$pattern_hostname_label(\\.$pattern_hostname_label)*";
else if (!preg_match($pattern, $signupemail)){ $pattern_ip = "([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])";
$msg[] = "Adresse mail invalide. Vous pouvez utiliser des lettres, des chiffres et $pattern_host = "($pattern_hostname|\\[$pattern_ip\\])";
les caractères spéciaux '-', '_' et '.'"; // 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à
$signupemail = $_POST['signupemail']; $pattern = ";^$pattern_local@$pattern_host\$;";
unset($_POST['signupemail']);
$signupemail = ""; if(trim($signupemail) == ""){
} $msg[] = $strings['err_signup_fill_mail'];
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 else if (!preg_match($pattern, $signupemail)){
oublier votre identifiant et/ou votre mot de passe."; // TODO : ce message est erroné.
unset($_POST['signupemail']); $msg[] = $strings['err_signup_invalid_mail'];
$signupemail = ""; }
} else if ($db->querySingle("SELECT mail FROM user WHERE mail='$signupemail'") != null){
$msg[] = $strings['err_signup_existing_mail'];
}
} }
if(isset($_POST['signupid'])){ if(isset($_POST['signupid'])){
$newpage = false; $newpage = false;
$signupid = $_POST['signupid']; $signupid = $_POST['signupid'];
$pattern = "/^([a-zA-Z0-9])+([\.\-_][a-zA-Z0-9]*)*/"; $pattern = "/^([a-zA-Z0-9])+([\.\-_][a-zA-Z0-9]*)*/";
if(trim($signupid) == ""){ if(trim($signupid) == ""){
$msg[] = "Veuillez renseigner le champ 'Choisir un identifiant'.\n"; $msg[] = $strings['err_signup_fill_login'];
unset($_POST['signupid']); }
$signupid = ""; else if (!preg_match($pattern, $signupid)){
} $msg[] = $strings['err_signup_invalid_login'];
else if (!preg_match($pattern, $signupemail)){ $signupid = $_POST['signupid'];
$msg[] = "Identifiant invalid. Vous pouvez utiliser des lettres, des chiffres et }
les caractères spéciaux '-', '_' et '.'\n"; else if ($db->querySingle("SELECT login FROM user WHERE login='$signupid'") != null){
$signupid = $_POST['signupid']; $msg[] = $strings['err_signup_existing_login'];
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 = "";
}
} }
if(isset($_POST['signuppswd1'])){ if(isset($_POST['signuppswd1'])){
$newpage = false; $newpage = false;
$signuppswd1 = $_POST['signuppswd1']; $signuppswd1 = $_POST['signuppswd1'];
if(trim($signuppswd1) == ""){ if(trim($signuppswd1) == ""){
$msg[] = "Veuillez renseigner le champ 'Mot de passe'.\n"; $msg[] = $strings['err_signup_fill_passwd1'];
unset($_POST['signuppswd1']); }
$signuppswd1 = ""; else if(strlen($signuppswd1) < 5){
unset($_POST['signuppswd2']); $msg[] = $strings['err_signup_invalid_passwd1'];
$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 = "";
}
} }
if(isset($_POST['signuppswd2'])){ if(isset($_POST['signuppswd2'])){
$newpage = false; $newpage = false;
$signuppswd2 = $_POST['signuppswd2']; $signuppswd2 = $_POST['signuppswd2'];
if(trim($signuppswd2) == ""){ if(trim($signuppswd2) == ""){
$msg[] = "Veuillez renseigner le champ 'Resaisir le mot de passe'.\n"; $msg[] = $strings['err_signup_fill_passwd2'];
unset($_POST['signuppswd1']); }
$signuppswd1 = ""; if(strlen($signuppswd1 != $signuppswd2)){
unset($_POST['signuppswd2']); $msg[] = $strings['err_signup_passwords_dont_match'];
$signuppswd2 = ""; }
} }
if(strlen($signuppswd1 != $signuppswd2)){
$msg[] = "Les deux mots de passe saisis ne sont pas identiques.\n"; if(count($msg) == 0 && $newpage == false)
unset($_POST['signuppswd1']); {
$signuppswd1 = ""; $ok = ($db->query("INSERT INTO user(mail, login, hash_passwd, score) VALUES ('" . SQLite3::escapeString($signupemail)
unset($_POST['signuppswd2']); . "', '" . SQLite3::escapeString($signupid)
$signuppswd2 = ""; . "', '" . 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">
<!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"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head> <head>
<title>PtiClic sous Android - Version Alpha - Inscription</title> <title>PtiClic sous Android - Version Alpha - Inscription</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="ressources/simple.css" /> <link rel="stylesheet" href="ressources/simple.css" />
</head> </head>
<body>
<?php include("ressources/menu.inc"); ?>
<body>
<div class="menu">
<?php include("ressources/menu.html"); ?>
</div>
<div class="content"> <div class="content">
<p>Vous n'êtes pas encore inscrit&nbsp;? Inscrivez-vous&nbsp;:</p> <h2>Inscription</h2>
<?php <?php include("ressources/showmsg.inc"); ?>
if(sizeof($msg) > 0){ <h3>Vous n'avez pas encore de compte ?</h3>
echo '<span class="message warning">'. <p>
"<b>Saisie invalide. Les erreurs sont les suivantes : </b> <p>". Inscrivez-vous pour accéder l'ensemble du site et faire parti des alpha-testeurs ! <br />
"<ul>"; Vous pourrez ainsi télécharger l'application la tester et nous faire part de vos remarques afin de l'améliorer.<br />
foreach ($msg as $m) { </p>
echo "<li>".$m; <p>
} Pour vous inscrire maintenant veuillez remplir le formulaire qui suit :
echo "</ul>"; </p>
} <?php
else if($newpage == false){ if(count($msg) > 0)
$ok = ($db->query("INSERT INTO user(mail, login, hash_passwd, score) VALUES ('" . SQLite3::escapeString($signupemail) {
. "', '" . SQLite3::escapeString($signupid) echo '<div class="message warning">'.
. "', '" . SQLite3::escapeString(md5($signuppswd1)) '<p><b>Saisie invalide. Les erreurs sont les suivantes : </b></p>'.
. "', 0);")); '<ul>';
foreach ($msg as $m) {
if($ok == true) echo "<li>".htmlspecialchars($m)."</li>";
echo "insertion worked!!!!!"; }
else echo '</ul>';
echo "insertion failed!!!"; echo '</div>';
//header("location:".$location); }
echo '<span class="message success">'."Inscription s'est déroulée avec succès !"; ?>
unset($_POST); <form name="signupform" method="post" action="signup.php?return=<?php echo $location; ?>">
$newpage = true; <table class="signuptbl">
} <tr>
<td>
echo '</span>'; <label for="signupemail">Saisir votre adresse mail&nbsp;:</label>
?> </td>
<form name="signupform" method="post" action="signup.php?return=<?php echo $location; ?>"> <td>
<table class="signuptbl"> <input name="signupemail" type="text"
<tr> <?php
<td> if(isset($_POST['signupemail'])){
<label for="signupemail">Saisir votre adresse mail&nbsp;:</label> echo " value='$signupemail'";
</td> }
<td> ?>
<input name="signupemail" type="text" />
<?php </td>
if(isset($_POST['signupemail'])){ </tr>
echo "value='$signupemail'"; <tr>
} <td>
?> <label for="signupid">Choisir un identifiant&nbsp;: </label>
/><br /> </td>
</td> <td>
</tr> <input name="signupid" type="text"
<tr> <?php
<td> if(isset($_POST['signupid'])){
<label for="signupid">Choisir un identifiant&nbsp;: </label> echo " value='$signupid'";
</td> }
<td> ?>
<input name="signupid" type="text" />
<?php </td>
if(isset($_POST['signupid'])){ </tr>
echo "value='$signupid'"; <tr>
} <td>
?> <label for="signuppswd1">Choisir un mot de passe&nbsp;: </label>
/> </td>
</td> <td>
</tr> <input name="signuppswd1" type="password" />
<tr> </td>
<td> </tr>
<label for="signuppswd1">Choisir un mot de passe&nbsp;: </label> <tr>
</td> <td>
<td> <label for="signuppswd2">Resaisir le mot de passe&nbsp;: </label>
<input name="signuppswd1" type="password" /> </td>
</td> <td>
</tr> <input name="signuppswd2" type="password" />
<tr> </td>
<td> </tr>
<label for="signuppswd2">Resaisir le mot de passe&nbsp;: </label> <tr>
</td> <td>
<td>
<input name="signuppswd2" type="password" /> </td>
</td> <td>
</tr> <input type="submit" name="signupsubmit" value="Valider" />
<tr> </td>
<td> </tr>
</table>
</td> </form>
<td> <h3>Vous êtes déjà inscrit ?</h3>
<input type="submit" name="signupsubmit" value="Valider" /> <p><a href="login.php?return=<?php echo $location; ?>">Connectez-vous !</a></p>
</td>
</tr>
</table>
</form>
</div>
<div class="footer">
<?php include("ressources/footer.html"); ?>
</div> </div>
<?php include("ressources/footer.inc"); ?>
</body> </body>
</html> </html>