Jump to content
trane

[Problema] PHP - Website

Recommended Posts

trane

Olá Pessoal!

Estou a desenvolver um jogo browser em forma de quiz, que consiste em vários níveis de perguntas e cada resposta tem +2 pontos e -1 ponto se for errada.

Actualmente estou com um problema na pagina inicial.

tDkssAT.jpg

E como podem ver tem o "registo/login" e a dificuldade, ao inserir de 1 ao 4 , queria arranjar uma maneira que o ranking no lado direito fosse alterado para o nível que a pessoa escolhe-se para isso tentei usar switch para cases mas está-me a dar erro.

Vou deixar aqui o código fonte da pagina inicial até porque podem encontrar mais alguns erros e tentar-me assim ajudar na elaboração.

<!DOCTYPE HTML>
<html>
<head>
<title>GostoDoFrio - Jogo</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!--[if lte IE 8]><script src="assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="assets/css/main.css" />
<!--[if lte IE 8]><link rel="stylesheet" href="assets/css/ie8.css" /><![endif]-->
<!--[if lte IE 9]><link rel="stylesheet" href="assets/css/ie9.css" /><![endif]-->
</head>
<style type="text/css">
input:required:invalid, input:focus:invalid {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeVJREFUeNqkU01oE1EQ/mazSTdRmqSxLVSJVKU9RYoHD8WfHr16kh5EFA8eSy6hXrwUPBSKZ6E9V1CU4tGf0DZWDEQrGkhprRDbCvlpavan3ezu+LLSUnADLZnHwHvzmJlvvpkhZkY7IqFNaTuAfPhhP/8Uo87SGSaDsP27hgYM/lUpy6lHdqsAtM+BPfvqKp3ufYKwcgmWCug6oKmrrG3PoaqngWjdd/922hOBs5C/jJA6x7AiUt8VYVUAVQXXShfIqCYRMZO8/N1N+B8H1sOUwivpSUSVCJ2MAjtVwBAIdv+AQkHQqbOgc+fBvorjyQENDcch16/BtkQdAlC4E6jrYHGgGU18Io3gmhzJuwub6/fQJYNi/YBpCifhbDaAPXFvCBVxXbvfbNGFeN8DkjogWAd8DljV3KRutcEAeHMN/HXZ4p9bhncJHCyhNx52R0Kv/XNuQvYBnM+CP7xddXL5KaJw0TMAF8qjnMvegeK/SLHubhpKDKIrJDlvXoMX3y9xcSMZyBQ+tpyk5hzsa2Ns7LGdfWdbL6fZvHn92d7dgROH/730YBLtiZmEdGPkFnhX4kxmjVe2xgPfCtrRd6GHRtEh9zsL8xVe+pwSzj+OtwvletZZ/wLeKD71L+ZeHHWZ/gowABkp7AwwnEjFAAAAAElFTkSuQmCC);
background-position: right top;
background-repeat: no-repeat;
-moz-box-shadow: none;
}
input:required:valid {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAepJREFUeNrEk79PFEEUx9/uDDd7v/AAQQnEQokmJCRGwc7/QeM/YGVxsZJQYI/EhCChICYmUJigNBSGzobQaI5SaYRw6imne0d2D/bYmZ3dGd+YQKEHYiyc5GUyb3Y+77vfeWNpreFfhvXfAWAAJtbKi7dff1rWK9vPHx3mThP2Iaipk5EzTg8Qmru38H7izmkFHAF4WH1R52654PR0Oamzj2dKxYt/Bbg1OPZuY3d9aU82VGem/5LtnJscLxWzfzRxaWNqWJP0XUadIbSzu5DuvUJpzq7sfYBKsP1GJeLB+PWpt8cCXm4+2+zLXx4guKiLXWA2Nc5ChOuacMEPv20FkT+dIawyenVi5VcAbcigWzXLeNiDRCdwId0LFm5IUMBIBgrp8wOEsFlfeCGm23/zoBZWn9a4C314A1nCoM1OAVccuGyCkPs/P+pIdVIOkG9pIh6YlyqCrwhRKD3GygK9PUBImIQQxRi4b2O+JcCLg8+e8NZiLVEygwCrWpYF0jQJziYU/ho2TUuCPTn8hHcQNuZy1/94sAMOzQHDeqaij7Cd8Dt8CatGhX3iWxgtFW/m29pnUjR7TSQcRCIAVW1FSr6KAVYdi+5Pj8yunviYHq7f72po3Y9dbi7CxzDO1+duzCXH9cEPAQYAhJELY/AqBtwAAAAASUVORK5CYII=);
background-position: right top;
background-repeat: no-repeat;
}
</style>
<body class="index">
<div id="page-wrapper">
 <!-- Header -->
 <header id="header" class="alt">
	 <h1 id="logo"><a href="index.php">GostoDoFrio</a></h1>
	 <nav id="nav">
	 <ul>
		 <li class="current"><a href="index.php">Bem-Vindo</a></li>
	 </ul>
	 </nav>
 </header>
 <!-- Banner -->
 <section id="banner">
	 <div class="inner">
<h2>LOGIN</h2>

	 <header>
<?php
require_once "config.php"; // inclui a conexão a database
$nivel = '0';
if(!isset($_POST['join'])){

echo "
<form method=\"post\" action=\"index.php\">
<label>Nome</label><br/><input name=\"username\" required/><br/>
<label>Apelido</label><br/><input name=\"apelido\" required/><br/>
<label>Email</label><br/><input name=\"email\"/><br/>
<br/>
<label>Dificuldade</label><br/><input name=\"nivel\"/><br/>(1-4)<br/>
<br/>
<br/>
<input type=\"submit\" name=\"join\" value=\"submit\"/>
</form>
<br/>
";

}
else{
$user = mysql_real_escape_string($_POST['username']);
$apelido = mysql_real_escape_string($_POST['apelido']);
$email = $_POST['email'];
$nivel = $_POST['nivel'];
mysql_query("INSERT INTO users (id, username, apelido, email) VALUES (NULL, '$user', '$apelido', '$email')") or die("Alguma coisa correu mal durante o registo. MySQL erro: ".mysql_error());
session_start();
$_SESSION['user'] = $user;
$_SESSION['apelido'] = $apelido;
$_SESSION['nivel'] = $nivel;
echo "
<br/>
Bem Vindo <strong>$user $apelido</strong>.";
echo "
<br/>
<form method=\"post\" action=\"perguntanivel1.php\">
<input type=\"submit\" name=\"submit\" value=\"Entrar!\"/>
</form>
<br/> ";
}
?>
	 </header>
	 </div>

	 <div class="inner">
<h2>RANKING</h2>
<center>
</center>
<?php
$_SESSION['nivel'] = $nivel;
switch ($nivel) {
case "1":
 echo "Your favorite color is red!";
 break;
case "2":
 echo "Your favorite color is blue!";
 break;
case "3":
 echo "Your favorite color is green!";
 break;
case "4":
 echo "Your favorite color is neither red, blue, nor green!";
 break;
}
?>
<table>
<tr>
<th>Lugar</th>
<th>Nome</th>
<th></th>
<th></th>
<th>Pontos</th>
</tr>
<?php
$host = "localhost";
$user = "filipe";
$pass = "filipe1234";
$db = "jogo";
mysql_connect($host, $user, $pass);
mysql_select_db($db);
$sql = mysql_query('Select * From users ORDER BY PontosN1 Desc Limit 0,5');
$lista = 0;
While($dado = mysql_fetch_array($sql))
{
$lista++; ?>
<tr>
<td><?php echo $lista ?></td>
<td><?php echo $dado['username']; echo $dado['apelido'];?></td>
<td></td>
<td></td>
<td><?php echo $dado['PontosN1']; ?></td>
</tr>
<?php } ?>
</table>

<h2>INSTRUÇÕES</h2>
<p>.............................</p>

	 </div>
 </section>
 <!-- Footer -->
 <footer id="footer">
	 <ul class="icons">
	 <li><a href="#" class="icon circle fa-twitter"><span class="label">Twitter</span></a></li>
	 <li><a href="#" class="icon circle fa-facebook"><span class="label">Facebook</span></a></li>
	 <li><a href="#" class="icon circle fa-google-plus"><span class="label">Google+</span></a></li>
	 </ul>
	 <ul class="copyright">
	 <li>© GostoDoFrio</li><li>Code/Design: <a href="">BOTODACRUZ - AGENCIA CRIATIVA</a></li>
	 </ul>
 </footer>
</div>
<!-- Scripts -->
 <script src="assets/js/jquery.min.js"></script>
 <script src="assets/js/jquery.dropotron.min.js"></script>
 <script src="assets/js/jquery.scrolly.min.js"></script>
 <script src="assets/js/jquery.scrollgress.min.js"></script>
 <script src="assets/js/skel.min.js"></script>
 <script src="assets/js/util.js"></script>
 <!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]-->
 <script src="assets/js/main.js"></script>
</body>
</html>

Depois temos para ser mais especifico a zona do ranking:

<table>
<tr>
<th>Lugar</th>
<th>Nome</th>
<th></th>
<th></th>
<th>Pontos</th>
</tr>
<?php
$host = "localhost";
$user = "filipe";
$pass = "filipe1234";
$db = "jogo";
mysql_connect($host, $user, $pass);
mysql_select_db($db);
$sql = mysql_query('Select * From users ORDER BY PontosN1 Desc Limit 0,5');
$lista = 0;
While($dado = mysql_fetch_array($sql))
{
$lista++; ?>
<tr>
<td><?php echo $lista ?></td>
<td><?php echo $dado['username']; echo $dado['apelido'];?></td>
<td></td>
<td></td>
<td><?php echo $dado['PontosN1']; ?></td>
</tr>
<?php } ?>
</table>

Cada nivel tem uma tabela chamada Pontosn1,pontosn2,pontosn3,pontosn4

Agradeço toda a ajuda!

Obrigado!

Share this post


Link to post
Share on other sites
trane

Desculpem a demora a responder, tive de me ausentar por uns dias.

O erro encontra-se no switch , ao inserir o nivel 1 até ao 4 , o ranking não muda para os niveis selecionados.

Share this post


Link to post
Share on other sites
HappyHippyHippo

qual é a parte do teu código que deveria fazer a alteração que pretendes ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
trane

<div class="inner">
<h2>LOGIN</h2>
			 <header>
<?php
require_once "config.php"; // inclui a conexão a database
$nivel = '0';
if(!isset($_POST['join'])){

echo "
<form method=\"post\" action=\"index.php\">
<label>Nome</label><br/><input name=\"username\" required/><br/>
<label>Apelido</label><br/><input name=\"apelido\" required/><br/>
<label>Email</label><br/><input name=\"email\"/><br/>
<br/>
<label>Dificuldade</label><br/><input name=\"nivel\"/><br/>(1-4)<br/>
<br/>
<br/>
<input type=\"submit\" name=\"join\" value=\"submit\"/>
</form>
<br/>
";
}
else{
$user = mysql_real_escape_string($_POST['username']);
$apelido = mysql_real_escape_string($_POST['apelido']);
$email = $_POST['email'];
$nivel = $_POST['nivel'];
mysql_query("INSERT INTO users (id, username, apelido, email) VALUES (NULL, '$user', '$apelido', '$email')") or die("Alguma coisa correu mal durante o registo. MySQL erro: ".mysql_error());
session_start();
$_SESSION['user'] = $user;
$_SESSION['apelido'] = $apelido;
$_SESSION['nivel'] = $nivel;
echo "
<br/>
Bem Vindo <strong>$user $apelido</strong>.";
echo "
<br/>
<form method=\"post\" action=\"perguntanivel1.php\">
<input type=\"submit\" name=\"submit\" value=\"Entrar!\"/>
</form>
<br/> ";
}
?>
			 </header>
			 </div>
			 <div class="inner">
<h2>RANKING</h2>
<center>
</center>
<?php
$_SESSION['nivel'] = $nivel;
switch ($nivel) {
case "1":
	 echo "Your favorite color is red!";
	 break;
case "2":
	 echo "Your favorite color is blue!";
	 break;
case "3":
	 echo "Your favorite color is green!";
	 break;
case "4":
	 echo "Your favorite color is neither red, blue, nor green!";
	 break;
}
?>

Ao selecionar o nivel tem de dar uma daquelas opções , porque caso deie uma dessas opções vou ja conseguir meter o rank e função dentro do echo.

Mas tambem tive a ver que da para usar radium button usando o javascript. se calhar é mais facil do que estar a usar esta função.

Share this post


Link to post
Share on other sites
HappyHippyHippo

só vejo código PHP, que é algo que corro no servidor.

por outras palavras, não vejo nada (código) que indique que ao seleccionar o nível no formulário faça alterar os dados de ranking apresentados.

como pretendes que o browser actualize a informação se nada indica que esta necessita de ser alterada ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Nixtren

Não tem haver com o problema em questão, mas um problema de segurança que encontrei:

mgDpw83.png

Falta a sanitização do $_POST['email'] contra SQL Injection :)

E também convém mencionar que estás a usar a antiga extensão MySQL que já foi deprecated (isto é, já é obsoleta). Num próximo projeto (ou ainda neste, se tiveres vontade de mudar) certifica-te que usas PDO ou MySQLi. Vê este post para mais informações:

http://www.portugal-a-programar.pt/topic/72099-algumas-duvidas-iniciais/#entry589162

Edit: E a tua página também está vulnerável a ataques XSS. Uma pessoa pode meter o seu username como "<script>alert(1);</script>" e esse script é executado. Podes aprender mais sobre o assunto aqui:

http://www.portugal-a-programar.pt/topic/16541-vulnerabilidades-em-aplicacoes-web/

Edited by Nixtren

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.