Bonjour,
Voila je rencontre un petit problème avec mon code.
Décrivez ici votre code o<?php
include("connect.php");
if(!empty($_POST) && isset($_POST["pseudo"]) && !empty($_POST["pseudo"])){
session_start();
$pseudo = $_POST["pseudo"];
$pseudo = mysql_escape_string($pseudo);
$sql = "SELECT * FROM connected WHERE pseudo LIKE '$pseudo' LIMIT 1";
$req = mysql_query($sql);
$data = mysql_fetch_assoc($req);
if(empty($data)){
$ip = $_SERVER["REMOTE_ADDR"];
$sql = "INSERT INTO connected(pseudo,ip,date) VALUES ('$pseudo','$ip',".time().")";
$req = mysql_query($sql) or die(mysql_error());
$idTchat = mysql_insert_id();
}
else{
if($data["ip"] == $_SERVER["REMOTE_ADDR"] && time()-$data["date"]<60 ){
$idTchat = $data["id"];
}
else if(time()-$data["date"]>60){
$idTchat = $data["id"];
}
else{
$erreur = "Ce pseudo est déja en cours d'utilisation";
}
}
if(!isset($erreur)){
$_SESSION["pseudo"] = $_POST["pseudo"];
$_SESSION["idTchat"] = $idTchat;
header("location: tchat.php");
}
}
?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="theme/style.css" type="text/css" media="screen" />
</head>
<body>
<div id="conteneur">
<h1>Mon tchat</h1>
<?php if(isset($erreur)){ echo "<p>$erreur</p>"; }?>
<form action="index.php" method="post">
Pseudo : <input type="text" name="pseudo"/>
<input type="submit" value="tchatter"/>
</form>
</div>
</body>
</html>u ce que vous cherchez à faire
Entourez votre code avec ce symbole ```
Je voudrais qu'il me redirige vers "tchat.php" mais il ne veut pas ...
Comment puis-je faire ?
Il reste sur index.php
Pourtant si je retape le pseudo il me met "Ce pseudo est déja en cours d'utilisation" et dans ma base de donné le pseudo est bien inscrit.
Je ne comprends donc pas pourquoi il ne me redirige pas.
Une solution ?
Bonjour.
Commence par arranger le contenu de ton sujet en mettant correctement les codes entre les balises appropriées.
Ensuite, tu précises dans le titre du sujet que le tchat est en PHP et ajax, mais tu ne nous montre que le code PHP.
Si je comprends bien, là ce n'est que la partie connexion/inscription qui n'utilise pas de script Ajax, si c'est le cas, je ne vois aucun intérêt de nous parler de tchat et encore moins d'ajax.
Ma page index :
<?php
include("connect.php");
if(!empty($_POST) && isset($_POST["pseudo"]) && !empty($_POST["pseudo"])){
session_start();
$pseudo = $_POST["pseudo"];
$pseudo = mysql_escape_string($pseudo);
$sql = "SELECT * FROM connected WHERE pseudo LIKE '$pseudo' LIMIT 1";
$req = mysql_query($sql);
$data = mysql_fetch_assoc($req);
if(empty($data)){
$ip = $_SERVER["REMOTE_ADDR"];
$sql = "INSERT INTO connected(pseudo,ip,date) VALUES ('$pseudo','$ip',".time().")";
$req = mysql_query($sql) or die(mysql_error());
$idTchat = mysql_insert_id();
}
else{
if($data["ip"] == $_SERVER["REMOTE_ADDR"] && time()-$data["date"]<60 ){
$idTchat = $data["id"];
}
else if(time()-$data["date"]>60){
$idTchat = $data["id"];
}
else{
$erreur = "Ce pseudo est déja en cours d'utilisation";
}
}
if(!isset($erreur)){
$_SESSION["pseudo"] = $_POST["pseudo"];
$_SESSION["idTchat"] = $idTchat;
header("location: tchat.php");
}
}
?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="theme/style.css" type="text/css" media="screen" />
</head>
<body>
<div id="conteneur">
<h1>Mon tchat</h1>
<?php if(isset($erreur)){ echo "<p>$erreur</p>"; }?>
<form action="index.php" method="post">
Pseudo : <input type="text" name="pseudo"/>
<input type="submit" value="tchatter"/>
</form>
</div>
</body>
</html>
Ma page ajax :
<?php
session_start();
require("connect.php");
$d =array();
if(!isset($_SESSION["pseudo"]) || empty($_SESSION["pseudo"]) || !isset($_POST["action"])){
$d["erreur"] = "Vous devez être connecté pour utiliser le tchat";
}
else{
extract($_POST);
$pseudo = mysql_escape_string($_SESSION["pseudo"]);
/**
* Action : addMessage
* Permet l'ajout d'un message
* */
if($_POST["action"]=="addMessage"){
$message = mysql_escape_string($message);
$sql = "INSERT INTO messages(pseudo,message,date) VALUES ('$pseudo','$message',".time().")";
mysql_query($sql) or die(mysql_error());
$d["erreur"] ="ok";
}
/**
* Action : getMessages
* Permet l'affichage des dernier messages
* */
if($_POST["action"]=="getMessages"){
$lastid = floor($lastid);
$sql = "SELECT * FROM messages WHERE id>$lastid ORDER BY date ASC";
$req = mysql_query($sql) or die(mysql_error());
$d["result"] = "";
$d["lastid"] = $lastid;
while($data = mysql_fetch_assoc($req)){
$d["result"] .= '<p><strong>'.$data["pseudo"].'</strong>('.date("d/m/Y H:i:s",$data["date"]).') : '.htmlentities(utf8_decode($data["message"])).'</p>';
$d["lastid"] = $data["id"];
}
$d["erreur"]="ok";
}
/**
* Action : getConnected
* Permet l'affichage des derniers connectés
**/
if($_POST["action"]=="getConnected"){
$now = time();
$sql = "SELECT pseudo FROM connected WHERE $now-date<60";
$req = mysql_query($sql) or die(mysql_error());
$d["result"] = "Connectés : ";
while($data = mysql_fetch_assoc($req)){
$d["result"] .= $data["pseudo"].", ";
}
$d["result"] = substr($d["result"],0,-2);
$sql = "UPDATE connected SET date = $now WHERE id={$_SESSION["idTchat"]}";
mysql_query($sql) or die(mysql_error());
$d["erreur"] = "ok";
}
}
echo json_encode($d);
?>
PS : J'avais mis que le php car c'est la qu'est le "header".
Je pensais donc que ça pouvait venir de la.
Si vous avez une solution à mon problème de redirection je suis preneur.
Merci d'avance.
Ton problème de redirection est simple: A partir du moment où il y a un echo de quoiquecesoit avant ton header("Location: tchat.php");, ca redirige plus, et c'est un comportement normal
Faudrait pouvoir voir tout le code....
Si tu fais un simple fichier avec dedans <?php header("Location: tchat.php"); ?> et que tu appelles ce fichier, la redirection fonctionne?
Oui oui comme ça sa fonctionne très bien?
j'ai déja utiliser plein de fois la fonction header mais la je ne vois pas ou ça coince.
pourtant quand je mets un pseudo, il entre dans la base de donné et me signale aussi si il est déja en ligne.
De plus quand je vais sur la page tchat je vois d'afficher mes pseudos en ligne.
Donc je vois pas ou est le souci )=
PS : tu as FB ?
http://php.net/manual/fr/function.header.php
Vérifie que tu n'as vraiment rien qui s'affiche avant ton header, ne serait ce qu'une balise html ...
RIEN NE DOIT S'AFFICHER pour que ton header fonctionne