[PHP] 2 problemes 1-session sur serveur free
Résolu
neo2099
Messages postés
164
Date d'inscription
Statut
Membre
Dernière intervention
-
javator -
javator -
Bonjour,
je fait un jeu avec des amies un peu style ogame (ceux qui ne connaisse pas un tour sur google) puis pendant que le batiment ce construit un compte a rebour ce lance une fois finit un bouton actualisez de vrait apparaitre, mais le probleme c'est que des que je lance le cpt le bouton actualiser est deja present(mon probleme 2). Le probleme 1, c'est que tout marche correctement en local, mais des que je met mon script sur le serveur (ici free) il m'affiche :
Warning: Unknown(): open(/mnt/152/sda/7/d/letombeaudutemps/sessions/sess_fa6e5916d0e5ede20e35010ad672907f, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/152/sda/7/d/letombeaudutemps/sessions) in Unknown on line 0
Donc si quelqu'un pouvait m'aider svp.
Voici le script :
<?php
@session_start(); //ATTENTION SI LE SESSION START N'EST PAS PRESENT LE SCRIPT N'AFFICHE AUCUN COMPTEUR
if (isset($_SESSION['pseudo']) && $_SESSION['password'])
{
$pseudo= @$_SESSION['pseudo'];
$restant=0;
$command="";
if (isset($_POST["command"])) $command = $_POST["command"];
// Connexion à MySQL
$cfg_hostname="**********";
$cfg_username="**********";
$cfg_password="**********";
$cfg_database="**********";
$link=mysql_connect($cfg_hostname, $cfg_username, $cfg_password) or die("Can\'t connect to MySql server !");
// Sélection de la base de données
$result=mysql_select_db($cfg_database,$link) or die("Impossible de sélectionner la base ".$cfg_database." !");
$query = "SELECT * FROM login WHERE pseudo='".$pseudo."'";
$result=mysql_query($query,$link);
if (!$result)
{
echo "query = ".$query."\n";
echo "mysql_errno = ".mysql_errno($link)."\n";
echo "mysql_error = ".mysql_error($link)."\n";
exit;
}
// Aucun résultat retourné par le SELECT -> le joueur n'est pas dans la table
if (mysql_num_rows($result) == 0)
{
$date=date("Y-m-d H:i:s");
$query = "INSERT INTO login (pseudo,date) VALUES ('".$pseudo."','".$date."')";
$result=mysql_query($query,$link);
}
else
{
if ($command == "new")
{
$date=date("Y-m-d H:i:s");
// Met à jour la date pour le joueur dans la table
$query = "UPDATE login SET date='".$date."' WHERE pseudo='".$pseudo."'";
$result=mysql_query($query,$link);
}
else
{
$row = mysql_fetch_object($result);
$date = $row->date;
}
}
if ($command == "actualiser")
{
mysql_connect("*******", "********", "********");
mysql_select_db("*********");
$reponse = mysql_query("SELECT * FROM login") or die(mysql_error());
while($donnees = mysql_fetch_array($reponse))
{
$niveau = $donnees["niveau"];
$metal = $donnees["metal"];
}
$niveau++;
mysql_connect("********", "********", "********");
mysql_select_db("************");
mysql_query("UPDATE login SET niveau='".$niveau."' where pseudo='".$pseudo."'");
}
// Convertit la date au format "YYYY-MM-DD HH:MM:SS" en TimeStamp
$timestamp=mktime(substr($date,11,2),substr($date,14,2),substr($date,17,2),substr($date,5
,2),
substr($date,8,2),substr($date,0,4));
$startdate=date("d/m/Y à H:i:s",$timestamp);
$duree = 100; // Durée allouée à la partie : 100 secondes
$restant=$duree-(time()-$timestamp);
if ($restant < 0) { $restant = 0; }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en">
<head>
<title>Game</title>
<font color="white">
<style>
body
{
font-size:10pt;
font-family:Arial;
}
div img
{
padding:0px;
margin:0px;
display:inline;
border-width:0px;
}
</style>
<script type="text/javascript">
<!--
function toHMS(duree)
{
var temps = new Array();
var hh = Math.floor(duree/3600);
var mm = Math.floor((duree-hh*3600)/60);
var ss = duree-hh*3600-mm*60;
temps[0]=Math.floor(hh/10);
temps[1]=hh-temps[0]*10;
temps[2]=Math.floor(mm/10);
temps[3]=mm-temps[2]*10;
temps[4]=Math.floor(ss/10);
temps[5]=ss-temps[4]*10;
return temps;
}
var restant=<?php echo $restant; ?>;
function decompte()
{
var seq = toHMS(restant);
for (var i=0; i < 6; i++)
{
document.getElementById("seq_"+i).src="c"+seq[i]+".gif";
}
if (restant)
{
restant--;
window.setTimeout("decompte()",1000);
}
else
{
alert("Batiment ok!");
}
}
// -->
</script>
</head>
<? mysql_connect("*******", "************", "***********");
mysql_select_db("************");
$reponse = mysql_query("SELECT * FROM login") or die(mysql_error());
while($donnees = mysql_fetch_array($reponse))
{
$niveau = $donnees["niveau"];
$metal = $donnees["metal"];
}?>
<body <?php if ($restant) echo "onload=\"decompte()\"";?>>
<font color="white">
Niveau <? echo $niveau ?>
<div>
Temps restant <img id="seq_0" src="c0.gif"><img id="seq_1" src="c0.gif"><img src="colon.gif"><img id="seq_2" src="c0.gif"><img id="seq_3" src="c0.gif"><img src="colon.gif"><img id="seq_4" src="c0.gif"><img id="seq_5" src="c0.gif">
</div>
<br/>
<br/>
<br/>
<br/>
<?php
echo $restant;
if ($metal >= 2000)
{
if (!isset($_POST["pseudo"]) && $restant ==0)
{?>
<form action="batiment.php" method="post">
<input type="hidden" id="command" name="command" value="new">
<input type="hidden" id="pseudo" name="pseudo" value="<? echo $pseudo; ?>">
<input type="submit" value="Construire">
<?
}
else
{
?>
<form action="batiment.php" method="post">
<input type="hidden" id="command" name="command" value="actualiser">
<input type="hidden" id="pseudo" name="pseudo" value="<? echo $pseudo; ?>">
<input type="submit" value="Actualiser">
<?
}
}
}
?>
</html>
Je c'est qu'il y a des erreurs et que mysql est ouvert 150 fois mais ceci est un gros brouillon lol.
Si quelqu'un peu m'aider, merci d'avance.
je fait un jeu avec des amies un peu style ogame (ceux qui ne connaisse pas un tour sur google) puis pendant que le batiment ce construit un compte a rebour ce lance une fois finit un bouton actualisez de vrait apparaitre, mais le probleme c'est que des que je lance le cpt le bouton actualiser est deja present(mon probleme 2). Le probleme 1, c'est que tout marche correctement en local, mais des que je met mon script sur le serveur (ici free) il m'affiche :
Warning: Unknown(): open(/mnt/152/sda/7/d/letombeaudutemps/sessions/sess_fa6e5916d0e5ede20e35010ad672907f, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/152/sda/7/d/letombeaudutemps/sessions) in Unknown on line 0
Donc si quelqu'un pouvait m'aider svp.
Voici le script :
<?php
@session_start(); //ATTENTION SI LE SESSION START N'EST PAS PRESENT LE SCRIPT N'AFFICHE AUCUN COMPTEUR
if (isset($_SESSION['pseudo']) && $_SESSION['password'])
{
$pseudo= @$_SESSION['pseudo'];
$restant=0;
$command="";
if (isset($_POST["command"])) $command = $_POST["command"];
// Connexion à MySQL
$cfg_hostname="**********";
$cfg_username="**********";
$cfg_password="**********";
$cfg_database="**********";
$link=mysql_connect($cfg_hostname, $cfg_username, $cfg_password) or die("Can\'t connect to MySql server !");
// Sélection de la base de données
$result=mysql_select_db($cfg_database,$link) or die("Impossible de sélectionner la base ".$cfg_database." !");
$query = "SELECT * FROM login WHERE pseudo='".$pseudo."'";
$result=mysql_query($query,$link);
if (!$result)
{
echo "query = ".$query."\n";
echo "mysql_errno = ".mysql_errno($link)."\n";
echo "mysql_error = ".mysql_error($link)."\n";
exit;
}
// Aucun résultat retourné par le SELECT -> le joueur n'est pas dans la table
if (mysql_num_rows($result) == 0)
{
$date=date("Y-m-d H:i:s");
$query = "INSERT INTO login (pseudo,date) VALUES ('".$pseudo."','".$date."')";
$result=mysql_query($query,$link);
}
else
{
if ($command == "new")
{
$date=date("Y-m-d H:i:s");
// Met à jour la date pour le joueur dans la table
$query = "UPDATE login SET date='".$date."' WHERE pseudo='".$pseudo."'";
$result=mysql_query($query,$link);
}
else
{
$row = mysql_fetch_object($result);
$date = $row->date;
}
}
if ($command == "actualiser")
{
mysql_connect("*******", "********", "********");
mysql_select_db("*********");
$reponse = mysql_query("SELECT * FROM login") or die(mysql_error());
while($donnees = mysql_fetch_array($reponse))
{
$niveau = $donnees["niveau"];
$metal = $donnees["metal"];
}
$niveau++;
mysql_connect("********", "********", "********");
mysql_select_db("************");
mysql_query("UPDATE login SET niveau='".$niveau."' where pseudo='".$pseudo."'");
}
// Convertit la date au format "YYYY-MM-DD HH:MM:SS" en TimeStamp
$timestamp=mktime(substr($date,11,2),substr($date,14,2),substr($date,17,2),substr($date,5
,2),
substr($date,8,2),substr($date,0,4));
$startdate=date("d/m/Y à H:i:s",$timestamp);
$duree = 100; // Durée allouée à la partie : 100 secondes
$restant=$duree-(time()-$timestamp);
if ($restant < 0) { $restant = 0; }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en">
<head>
<title>Game</title>
<font color="white">
<style>
body
{
font-size:10pt;
font-family:Arial;
}
div img
{
padding:0px;
margin:0px;
display:inline;
border-width:0px;
}
</style>
<script type="text/javascript">
<!--
function toHMS(duree)
{
var temps = new Array();
var hh = Math.floor(duree/3600);
var mm = Math.floor((duree-hh*3600)/60);
var ss = duree-hh*3600-mm*60;
temps[0]=Math.floor(hh/10);
temps[1]=hh-temps[0]*10;
temps[2]=Math.floor(mm/10);
temps[3]=mm-temps[2]*10;
temps[4]=Math.floor(ss/10);
temps[5]=ss-temps[4]*10;
return temps;
}
var restant=<?php echo $restant; ?>;
function decompte()
{
var seq = toHMS(restant);
for (var i=0; i < 6; i++)
{
document.getElementById("seq_"+i).src="c"+seq[i]+".gif";
}
if (restant)
{
restant--;
window.setTimeout("decompte()",1000);
}
else
{
alert("Batiment ok!");
}
}
// -->
</script>
</head>
<? mysql_connect("*******", "************", "***********");
mysql_select_db("************");
$reponse = mysql_query("SELECT * FROM login") or die(mysql_error());
while($donnees = mysql_fetch_array($reponse))
{
$niveau = $donnees["niveau"];
$metal = $donnees["metal"];
}?>
<body <?php if ($restant) echo "onload=\"decompte()\"";?>>
<font color="white">
Niveau <? echo $niveau ?>
<div>
Temps restant <img id="seq_0" src="c0.gif"><img id="seq_1" src="c0.gif"><img src="colon.gif"><img id="seq_2" src="c0.gif"><img id="seq_3" src="c0.gif"><img src="colon.gif"><img id="seq_4" src="c0.gif"><img id="seq_5" src="c0.gif">
</div>
<br/>
<br/>
<br/>
<br/>
<?php
echo $restant;
if ($metal >= 2000)
{
if (!isset($_POST["pseudo"]) && $restant ==0)
{?>
<form action="batiment.php" method="post">
<input type="hidden" id="command" name="command" value="new">
<input type="hidden" id="pseudo" name="pseudo" value="<? echo $pseudo; ?>">
<input type="submit" value="Construire">
<?
}
else
{
?>
<form action="batiment.php" method="post">
<input type="hidden" id="command" name="command" value="actualiser">
<input type="hidden" id="pseudo" name="pseudo" value="<? echo $pseudo; ?>">
<input type="submit" value="Actualiser">
<?
}
}
}
?>
</html>
Je c'est qu'il y a des erreurs et que mysql est ouvert 150 fois mais ceci est un gros brouillon lol.
Si quelqu'un peu m'aider, merci d'avance.
A voir également:
- [PHP] 2 problemes 1-session sur serveur free
- Supercopier 2 - Télécharger - Gestion de fichiers
- Changer serveur dns - Guide
- Word 2013 free download - Télécharger - Traitement de texte
- Free devis facture 2 - Télécharger - Comptabilité & Facturation
- Word numéro de page 1/2 - Guide
14 réponses
je cite qqn
tu me dira ce que ca donne ^^
Bonjour, En rajoutant un répertoire sessions à la base de mes page perso chez mon hébergeur, Free, plus de problème ! Pourvu que ça dure !
tu me dira ce que ca donne ^^
rebonsoir,
Maintenant je n'est plus de message d'erreur mais mon compte a rebour ne s'affiche plus, j'ai une case vide
Maintenant je n'est plus de message d'erreur mais mon compte a rebour ne s'affiche plus, j'ai une case vide
C'est bon j'ai trouver il fallait que j'enleve la phrase
if (isset($_SESSION['pseudo']) && $_SESSION['password'])
donc le probleme 1 est resolu.
il reste a resoudre le probleme avec le bouton actualiser, et je me suis rendu compte que une fois le bouton actualiser cliquer le niveau monte a 1 mais il ne va pas plus loin, la valeur de veut pas passer a 2 et je ne comprend pas pourquoi
if (isset($_SESSION['pseudo']) && $_SESSION['password'])
donc le probleme 1 est resolu.
il reste a resoudre le probleme avec le bouton actualiser, et je me suis rendu compte que une fois le bouton actualiser cliquer le niveau monte a 1 mais il ne va pas plus loin, la valeur de veut pas passer a 2 et je ne comprend pas pourquoi
tu peu essayer de mettre des echo $niveau ou echo $donnees["niveau"] un peu partout pour voir si ya pas un bug ou un oubli d'update sql
tu peu aussi juste apres l'update refaire une "query" pour demander et afficher la valeur de niveau pour voir si le niveau a bien été augmenté
tu peu aussi juste apres l'update refaire une "query" pour demander et afficher la valeur de niveau pour voir si le niveau a bien été augmenté
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'ai essyer la valeur monte mais il ne l'enregistre pas dans la BDD, je voi pas ou j'ai pu oublier un truc mince
a un moment tu utilise
a un autre ca
la premiere fois tu met 2 parametre a mysql_query la deuxieme fois 1 seul c'est normal ?
$query = "INSERT INTO login (pseudo,date) VALUES ('".$pseudo."','".$date."')"; $result=mysql_query($query,$link);
a un autre ca
mysql_query("UPDATE login SET niveau='".$niveau."' where pseudo='".$pseudo."'");
la premiere fois tu met 2 parametre a mysql_query la deuxieme fois 1 seul c'est normal ?
ouai c'est normal la premiere requete tu insere une nouvelle ligne dans $query puis elle est ranger dans $result( c'est un espece de tableau) puis la deuxieme requete tu n'a pas besoin de la ranger vu que ce n'est qu'une simple mise a jour de variable dans la BDD du niveau pour tel pseudo
tu n'a pas bien compris je parle de parametre pas de ligne
a un moment tu utilise
$query = "INSERT INTO login (pseudo,date) VALUES ('".$pseudo."','".$date."')";
$result=mysql_query($query,$link);
ici 1er parametre : "INSERT INTO login (pseudo,date) VALUES ('".$pseudo."','".$date."')"
2è $link
a un autre ca
mysql_query("UPDATE login SET niveau='".$niveau."' where pseudo='".$pseudo."'");
ici 1 seule parametre : "UPDATE login SET niveau='".$niveau."' where pseudo='".$pseudo."'"
si je me suis trompé ben dsl
a un moment tu utilise
$query = "INSERT INTO login (pseudo,date) VALUES ('".$pseudo."','".$date."')";
$result=mysql_query($query,$link);
ici 1er parametre : "INSERT INTO login (pseudo,date) VALUES ('".$pseudo."','".$date."')"
2è $link
a un autre ca
mysql_query("UPDATE login SET niveau='".$niveau."' where pseudo='".$pseudo."'");
ici 1 seule parametre : "UPDATE login SET niveau='".$niveau."' where pseudo='".$pseudo."'"
si je me suis trompé ben dsl
oups excuse moi, J'ai mis la deuxieme requete comme pour la premiere, mais ca ne change absolument rien le niveau reste toujours a 1 pour ton info $link est un lien entre la requete et la variable (sa marquer dans mon livre php) donc je suis toujours coincé pourtant au debut le niveau est a zero une fois le bouton actualiser cliquer, il passe a 1. je comprend vraiment pas pourquoi il ne veut pas passer a 2, pourtant en local il change de niveau a chaque fois que je clique sur actualiser bizar bizar.
Merci quand meme de ton aide
Merci quand meme de ton aide
en local ca marche et pas sur le net ... bizare tu l'a di
la pricipal différence sera la base de donnée
vérifie que c'est bien la meme avec les mm reglage
sinon ben dsl je ne voi pas quoi faire surtout que moi j'utilise pas sqli mais sql
la pricipal différence sera la base de donnée
vérifie que c'est bien la meme avec les mm reglage
sinon ben dsl je ne voi pas quoi faire surtout que moi j'utilise pas sqli mais sql
sqli c'est la mise a jour des requetes je voualis essayer mais sinon j'utilise sql. figure toi que hier j'ai fait pas mal d'essai et j'ai remarquer que au lieu de mettre $niveau++ si je m'est $niveau = $niveau +2 par exemple ben le niveau restaera a 2 quoi il en soit si je met + 10 le niveau restera a 10 etc etc....
A croire qu'il passe 1 fois par mon script et apres mon programme devient capriseux et ne veux plus passer par c'est quelque ligne c'est vraiment space.
Il ya un truc que je voulais faire c'est voir dans phpmyadmin si on pouvait voir les requete qui été effectués par le script, j'ai vu partout qu'il y avait un historique des requete mais le pb c'est que c'est pas un serveur dédié donc je n'est pas d'acces pour regarder dans les logs de phpmyadmin
A croire qu'il passe 1 fois par mon script et apres mon programme devient capriseux et ne veux plus passer par c'est quelque ligne c'est vraiment space.
Il ya un truc que je voulais faire c'est voir dans phpmyadmin si on pouvait voir les requete qui été effectués par le script, j'ai vu partout qu'il y avait un historique des requete mais le pb c'est que c'est pas un serveur dédié donc je n'est pas d'acces pour regarder dans les logs de phpmyadmin
$niveau++; mysql_connect("********", "********", "********"); mysql_select_db("************"); mysql_query("UPDATE login SET niveau='".$niveau."' where pseudo='".$pseudo."'");la dedans peu eter que le update n'est pas pris en compte
as tu essayer de mettre un
or die(mysql_error());? car je voi que tu l'a mis a tes select mais pas a l'update