Améliorations sur le site (voir le reste du commentaire pour les détails)

* Lisibilité (liens qui ressortent plus, footer un peu plus gros (là il fallait une loupe :) )).
* Affichage des messages sur la page de destination pour signup.
* Possibilité d'afficher un message sur n'importe quelle page sur laquelle on redirect ( index.php?show_msg=ok_signup_registered par ex.).
* Regrouppement de tous les messages dans ressources/strings.inc, pour les affichages (point précédent) et pour que la vérification de l'orthographe soit plus facile (pas besoin de lire tout le code).
* Nettoyage des paramètres à certains endroits où ça avait été oublié (mais il en reste).
* Correction de quelques bugs (appel à la fonction mDie qui n'existe pas par ex.).
* On ne peut faire de redirect que sur nos pages, pour éviter un exploit par redirect.
* Signup connecte automatiquement l'utilisateur si l'inscription a fonctionné.
* Ajout de liens entre signup et login. Si on clique sur un des lien, la page de retour reste la bonne (par exemple download, au lieu de devenir login).
* Ré-indentation, uniformisation du style du code (plus ou moins, et plus moins que plus).
* Factorisation du code.
* Correction de la couleur du lien Télécharger.
* Correction de quelques bugs d'alignement (il en reste).
This commit is contained in:
Georges Dupéron 2011-02-24 20:04:47 +01:00
parent 6f09cacb53
commit 474f4258c5
12 changed files with 502 additions and 457 deletions

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,60 @@ 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.inc"); ?>
</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>'; <form action="contact.php" method="POST">
<table class="contacttbl">
if($displayForm == true) <tr>
{ <td>
?> <label for="email">Votre e-mail : </label>
<form action="contact.php" method="POST"> </td>
<table class="contacttbl"> <td>
<tr> <input type="text" id="email" name="email" />
<td> </td>
<label for="email">Votre e-mail : </label> </tr>
</td> <tr>
<td> <td>
<input type="text" id="email" name="email" /> <label for="subject">Objet du mail : </label>
</td> </td>
</tr> <td>
<tr> <input type="text" id="subject" name="subject" />
<td> </td>
<label for="subject">Objet du mail : </label> </tr>
</td> <tr>
<td> <td>
<input type="text" id="subject" name="subject" /> <label for="message">Votre message : </label>
</td> </td>
</tr> <td>
<tr> <textarea class="txMessage" id="message" name="message"></textarea>
<td> </td>
<label for="message">Votre message : </label> </tr>
</td> <tr>
<td> <td>
<textarea class="txMessage" id="message" name="message"></textarea>
</td> </td>
</tr> <td>
<tr> <span class="btSubmit"><input type="submit" value="Envoyer le message" /></span>
<td> </td>
</tr>
</td> </table>
<td> </form>
<span class="btSubmit"><input type="submit" value="Envoyer le message" /></span> <?php
</td> } // Fin de if($displayForm == true)
</tr>
</table>
</form>
<?php
}
?> ?>
</div> </div>
<div class="footer"> <?php include("ressources/footer.inc"); ?>
<?php include("ressources/footer.inc"); ?>
</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.inc"); ?>
</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.inc"); ?>
</div>
</body> </body>
</html> </html>

View File

@ -2,46 +2,39 @@
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");
?>
<!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.inc"); ?>
</div>
<div class="content"> <div class="content">
<?php include("ressources/showmsg.inc"); ?>
<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é, 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.inc"); ?>
</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.inc"); ?>
</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.inc"); ?>
</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,47 @@ 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.inc"); ?>
</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>
<tr>
<td>
</td> </td>
<td> <td>
<input type="submit" name="loginsubmit" value="Valider" /> <input type="submit" name="loginsubmit" value="Valider" />
</td> </td>
</tr> </tr>
</table> </table>
</form> </form>
</div> <h3>Vous n'avez pas encore de compte ?</h3>
<p><a href="signup.php?return=<?php echo $location; ?>">Inscrivez-vous !</a></p>
<div class="footer">
<?php include("ressources/footer.inc"); ?>
</div> </div>
<?php include("ressources/footer.inc"); ?>
</body> </body>
</html> </html>

View File

@ -1,23 +1,12 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <div class="footer">
"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;: <p>Les concepteurs du jeu&nbsp;:
<a href="http://www.lirmm.fr/~lafourcade/index2.html">Mathieu LAFOURCADE</a> et <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://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?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/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.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.univ-montp2.fr/">Université Montpellier II</a> -
<a href="http://www.lirmm.fr/"> <a href="http://www.lirmm.fr/">Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier</a> -
Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier</a> -
<a href="contact.php">Nous contacter</a> <a href="contact.php">Nous contacter</a>
</p> </p>
- </body> </div>
</html>

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 +1,21 @@
<h1>PtiClic <span class="android">sous Android™</span> - Version 0.1 Alpha</h1> <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> <span id="links">
<a href="download.php">Téléchargement</a> <a href="index.php">Accueil</a>
<!-- <a href=".php">Créer des parties</a> --> <a href="download.php">Téléchargement</a>
<a href="contact.php">Contact</a> <!-- <a href=".php">Créer des parties</a> -->
<?php <a href="contact.php">Contact</a>
if(!isset($_SESSION['userId'])) // Menu hors connexion. <?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> <a id="cnx" href="login.php">Se connecter</a>
<a id="cnx" href="signup.php">S'incrire</a>
<?php }
else // Menu une fois connecté. <?php }
{?> else // Menu une fois connecté.
<a id="cnx" href="login.php?d=true">Se deconnecter</a> {?>
<?php } ?> <a id="cnx" href="login.php?d=true">Se deconnecter</a>
</span> <?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 {
@ -72,7 +81,8 @@ html, body {
h1 { h1 {
color: #8b4; color: #8b4;
margin : 5px; margin : 0;
padding: 0.2em 0.5em;
} }
h2 { h2 {
@ -92,13 +102,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 +133,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 +142,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 +166,9 @@ h2#tache-description {
} }
#downloadlink:hover { #downloadlink:hover {
background-color: red; background-color: #5555ff;
color: white;
border-color: #ccccff;
} }
.downloadarea { .downloadarea {
@ -167,9 +178,9 @@ h2#tache-description {
} }
#cnx { #cnx {
float : right float : right
} }
.android { .android {
font-size: 70%; font-size: 70%;
} }

View File

@ -0,0 +1,33 @@
<?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'] = "Erreur lors de l'inscription, merci de nous signaler le problème.";
?>

View File

@ -1,206 +1,184 @@
<?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.inc"); ?>
</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>Inscrivez-vous :</p>
"<b>Saisie invalide. Les erreurs sont les suivantes : </b> <p>". <?php
"<ul>"; if(count($msg) > 0)
foreach ($msg as $m) { {
echo "<li>".$m; echo '<div class="message warning">'.
} '<p><b>Saisie invalide. Les erreurs sont les suivantes : </b></p>'.
echo "</ul>"; '<ul>';
} foreach ($msg as $m) {
else if($newpage == false){ echo "<li>".htmlspecialchars($m)."</li>";
$ok = ($db->query("INSERT INTO user(mail, login, hash_passwd, score) VALUES ('" . SQLite3::escapeString($signupemail) }
. "', '" . SQLite3::escapeString($signupid) echo '</ul>';
. "', '" . SQLite3::escapeString(md5($signuppswd1)) echo '</div>';
. "', 0);")); }
?>
if($ok == true) <form name="signupform" method="post" action="signup.php?return=<?php echo $location; ?>">
echo "insertion worked!!!!!"; <table class="signuptbl">
else <tr>
echo "insertion failed!!!"; <td>
//header("location:".$location); <label for="signupemail">Saisir votre adresse mail&nbsp;:</label>
echo '<span class="message success">'."Inscription s'est déroulée avec succès !"; </td>
unset($_POST); <td>
$newpage = true; <input name="signupemail" type="text"
} <?php
if(isset($_POST['signupemail'])){
echo '</span>'; echo " value='$signupemail'";
?> }
<form name="signupform" method="post" action="signup.php?return=<?php echo $location; ?>"> ?>
<table class="signuptbl"> />
<tr> </td>
<td> </tr>
<label for="signupemail">Saisir votre adresse mail&nbsp;:</label> <tr>
</td> <td>
<td> <label for="signupid">Choisir un identifiant&nbsp;: </label>
<input name="signupemail" type="text" </td>
<?php <td>
if(isset($_POST['signupemail'])){ <input name="signupid" type="text"
echo "value='$signupemail'"; <?php
} if(isset($_POST['signupid'])){
?> echo " value='$signupid'";
/><br /> }
</td> ?>
</tr> />
<tr> </td>
<td> </tr>
<label for="signupid">Choisir un identifiant&nbsp;: </label> <tr>
</td> <td>
<td> <label for="signuppswd1">Choisir un mot de passe&nbsp;: </label>
<input name="signupid" type="text" </td>
<?php <td>
if(isset($_POST['signupid'])){ <input name="signuppswd1" type="password" />
echo "value='$signupid'"; </td>
} </tr>
?> <tr>
/> <td>
</td> <label for="signuppswd2">Resaisir le mot de passe&nbsp;: </label>
</tr> </td>
<tr> <td>
<td> <input name="signuppswd2" type="password" />
<label for="signuppswd1">Choisir un mot de passe&nbsp;: </label> </td>
</td> </tr>
<td> <tr>
<input name="signuppswd1" type="password" /> <td>
</td>
</tr> </td>
<tr> <td>
<td> <input type="submit" name="signupsubmit" value="Valider" />
<label for="signuppswd2">Resaisir le mot de passe&nbsp;: </label> </td>
</td> </tr>
<td> </table>
<input name="signuppswd2" type="password" /> </form>
</td> <h3>Vous êtes déjà inscrit ?</h3>
</tr> <p><a href="login.php?return=<?php echo $location; ?>">Connectez-vous !</a></p>
<tr>
<td>
</td>
<td>
<input type="submit" name="signupsubmit" value="Valider" />
</td>
</tr>
</table>
</form>
</div>
<div class="footer">
<?php include("ressources/footer.inc"); ?>
</div> </div>
<?php include("ressources/footer.inc"); ?>
</body> </body>
</html> </html>