[PHP] 2 problemes 1-session sur serveur free [Résolu/Fermé]

Signaler
Messages postés
164
Date d'inscription
vendredi 13 avril 2007
Statut
Membre
Dernière intervention
9 avril 2020
-
 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.

14 réponses

Messages postés
710
Date d'inscription
lundi 20 août 2007
Statut
Membre
Dernière intervention
9 avril 2012
106
je cite qqn
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 ^^
Messages postés
164
Date d'inscription
vendredi 13 avril 2007
Statut
Membre
Dernière intervention
9 avril 2020
12
rebonsoir,

Maintenant je n'est plus de message d'erreur mais mon compte a rebour ne s'affiche plus, j'ai une case vide
Messages postés
164
Date d'inscription
vendredi 13 avril 2007
Statut
Membre
Dernière intervention
9 avril 2020
12
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
Messages postés
710
Date d'inscription
lundi 20 août 2007
Statut
Membre
Dernière intervention
9 avril 2012
106
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é
Messages postés
164
Date d'inscription
vendredi 13 avril 2007
Statut
Membre
Dernière intervention
9 avril 2020
12
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
Messages postés
710
Date d'inscription
lundi 20 août 2007
Statut
Membre
Dernière intervention
9 avril 2012
106
a un moment tu utilise
$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 ?
Messages postés
164
Date d'inscription
vendredi 13 avril 2007
Statut
Membre
Dernière intervention
9 avril 2020
12
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
Messages postés
710
Date d'inscription
lundi 20 août 2007
Statut
Membre
Dernière intervention
9 avril 2012
106
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
Messages postés
164
Date d'inscription
vendredi 13 avril 2007
Statut
Membre
Dernière intervention
9 avril 2020
12
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
Messages postés
710
Date d'inscription
lundi 20 août 2007
Statut
Membre
Dernière intervention
9 avril 2012
106
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
Messages postés
164
Date d'inscription
vendredi 13 avril 2007
Statut
Membre
Dernière intervention
9 avril 2020
12
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
Messages postés
710
Date d'inscription
lundi 20 août 2007
Statut
Membre
Dernière intervention
9 avril 2012
106
 $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
Messages postés
164
Date d'inscription
vendredi 13 avril 2007
Statut
Membre
Dernière intervention
9 avril 2020
12
c'est bon c'est resolu, j'avais oublier de poster ici. En faite je c'est pourquoi le niveau ne monter pas de +1 c'est parce que ce fichier la été un fichier include et que le fichier qui permet de voir ce cpt, il fallait fermer mysql. C'est tout.
Merci d'avoir essayer de m'aider
Pour citer qqn d'autre, il m'a fait rajouter un repertoire include dans la racine de ma page free, mais je ne me souvient plus à quoi ça sert?