Problème mysql

Eléphant du PHP | 68 Messages

27 juin 2012, 18:42

Bonjour,
J'ai un problème le voici: J'ai ce code:
<?php ob_start(); session_start(); $login = $_SESSION['name']; if (!isset($_SESSION['name'])){header('Location: ../index.php');}  ?>

<?php 
ini_set ('session.bug_compat_42', 0); 
ini_set ('session.bug_compat_warn', 0); 
?>  


<?php session_start(); $login = $_SESSION['name']; ?>

<title> Traitement </title>

<?php
$mdp = $_POST['mdp'];
  $minecraft = $_POST['minecraft'];
    $true_mdp = $_POST['true_mdp'];
require "../core/core.php";
?>
<?php
if(!empty($mdp) AND $mdp == $true_mdp)
{
	mysql_real_escape_string($mdp);
	$sql = 'UPDATE users SET mdp="'.$mdp.'" WHERE login="'.$login.'"';
	$req = mysql_query($sql) or die('Erreur SQL! <br/>'.$sql.'<br/>'.mysql_error()); 
}

if(!empty($minecraft)
{
	mysql_real_escape_string($minecraft);
	$sql = 'UPDATE users SET minecraft="'.$minecraft.'" WHERE login="'.$login.'"';
	$req = mysql_query($sql) or die('Erreur SQL! <br/>'.$sql.'<br/>'.mysql_error()); 
}
	
header('Location: ../index.php');    
    
?> 

<?php ob_end_flush(); ?>
Et il a une erreur 500:

Code : Tout sélectionner

[27-Jun-2012 18:37:41] PHP Parse error: syntax error, unexpected '{' in /home/mineserv/public_html/member/updatecompte.php on line 28
Le problème c'est que je vois pas comment je peux remplacer le "'{" et je suis oubligé de l'avoir...


Merci,
Léo

Mammouth du PHP | 790 Messages

27 juin 2012, 18:51

salut, regarde bien cette ligne:
if (!empty($minecraft) {
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Eléphant du PHP | 68 Messages

27 juin 2012, 19:09

Je comprend pas...
J'ai trouvé quelque chose:

Code : Tout sélectionner

<?php ob_start(); session_start(); $login = $_SESSION['name']; if (!isset($_SESSION['name'])){header('Location: ../index.php');} ?> <?php ini_set ('session.bug_compat_42', 0); ini_set ('session.bug_compat_warn', 0); ?> <?php session_start(); $login = $_SESSION['name']; ?> <title> Traitement </title> <?php $mdp = $_POST['mdp']; $minecraft = $_POST['minecraft']; $true_mdp = $_POST['true_mdp']; require "../core/core.php"; ?> <?php if(!empty($mdp) AND $mdp == $true_mdp) { mysql_real_escape_string($mdp); $sql = 'UPDATE users SET mdp="'.$mdp.'" WHERE login="'.$login.'"'; $req = mysql_query($sql) or die('Erreur SQL! <br/>'.$sql.'<br/>'.mysql_error()); } if (!empty($minecraft) ) { mysql_real_escape_string($minecraft); $sql = 'UPDATE users SET minecraft="'.$minecraft.'" WHERE login="'.$login.'"'; $req = mysql_query($sql) or die('Erreur SQL! <br/>'.$sql.'<br/>'.mysql_error()); } header('Location: ../index.php'); ?> <?php ob_end_flush(); ?>
J'ai mit un ) se qui donne
if (!empty($minecraft) )
Mais pour le "minecraft" sa marche mais pour le mdp sa marche pas, même pas lui d'avant.

Merci,
Leo

Mammouth du PHP | 790 Messages

27 juin 2012, 19:13

qu'est ce qui ne marche pas ?
je ne sais pas trop mais il me semble que ce serait plus correct comme ça:
($mdp == $true_mdp)
sans certitude...
Modifié en dernier par juliette le 27 juin 2012, 19:17, modifié 1 fois.
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Eléphant du PHP | 68 Messages

27 juin 2012, 19:14

Ok je vien de trouver en allant dans phpmyadmin j'ai vu que mon mdp n'est pas en md5...


Merci,
Leo

Eléphanteau du PHP | 33 Messages

28 juin 2012, 11:30

Je note un problème d'utilisation de fonction qui engendre un problème de sécurité:
mysql_real_escape_string($minecraft);
Tu fais appel à la fonction mais tu ne récupère pas le résultat, ce qui donne une vulnérabilité aux injections SQL.

leo45vl1
Invité n'ayant pas de compte PHPfrance

28 juin 2012, 22:37

@Xartrick Merci de m'avoir signalé cette faille :)

J'ai un autre problème: une autre erreur 500:
Mon code:

$sql = 'UPDATE server SET (title,description,twitter,facebook,ip,web,youtube,skype,slots,attribut,login,image) VALUES ('$titre','$description','$twitter','$facebook','$ip','$web','$youtube','$skype','$slots','$attribut','$login','$image') WHERE id="'.$id.'"';

Pourtant je vois pas ou est l'erreur j'ai tester avec plein d'autre commande: sa marche toujour pas.

Merci!,
Leo

ViPHP
xTG
ViPHP | 7331 Messages

28 juin 2012, 23:32

mysql_real_escape_string() a été utilisé sur toutes ces variables ?
Regardes les logs de ton serveur pour avoir l'erreur en clair générée par PHP (vu que sur le navigateur tu n'as qu'une erreur 500).

Eléphant du PHP | 68 Messages

29 juin 2012, 04:04

Heu...
Voici le code complet:
<?php ob_start(); if (!isset($_SESSION['name'])){header('Location: ../index.php');}  ?>

<?php 
ini_set ('session.bug_compat_42', 0); 
ini_set ('session.bug_compat_warn', 0); 
?>  


<?php session_start(); $login = $_SESSION['name']; ?>

<title> Traitement </title>

<?php
extract ($_POST);
$attribut = implode(', ',$case);
$dossier = '../upload/'; 
$fichier = basename($_FILES['image']['name']);
if(!empty($_FILES['image']) AND substr($fichier,-3) == "png" OR substr($fichier,-3) == "gif" OR substr($fichier,-3) == "jpg")
{
move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $fichier);
$sql = 'UPDATE server SET (title,description,twitter,facebook,ip,web,youtube,skype,slots,attribut,login,image) VALUES ('$titre','$description','$twitter','$facebook','$ip','$web','$youtube','$skype','$slots','$attribut','$login','$image') WHERE id="'.$id.'"';
$req = mysql_query($sql) or die('Erreur SQL! <br/>'.$sql.'<br/>'.mysql_error()); 
				
}
if(!empty($titre) AND !empty($description)){
	if(empty($facebook) OR filter_var("$facebook", FILTER_VALIDATE_URL) AND empty($twitter) OR filter_var("$twitter", FILTER_VALIDATE_URL) AND empty($web) OR filter_var("$web", FILTER_VALIDATE_URL) AND empty($youtube) OR filter_var("$youtube", FILTER_VALIDATE_URL))
	{
				require "../core/core.php";
				mysql_real_escape_string($titre);
        		mysql_real_escape_string($description);
         		mysql_real_escape_string($ip);
         		mysql_real_escape_string($slots);
				$image = $_FILES['image']['name'];
				$sql = 'UPDATE server SET (title,description,twitter,facebook,ip,web,youtube,skype,slots,attribut,login,image) VALUES ('$titre','$description','$twitter','$facebook','$ip','$web','$youtube','$skype','$slots','$attribut','$login','$image') WHERE id="'.$id.'"';
				$req = mysql_query($sql) or die('Erreur SQL! <br/>'.$sql.'<br/>'.mysql_error()); 
				
	}
	else
	{
		
	}
}
else
{

}
?> 

<?php ob_end_flush(); ?>
Pour error log, c'est dans les lignes $sql = 'UPDATE server SET (title,description,twitter,facebook,ip,web,youtube,skype,slots,attribut,login,image) VALUES ('$titre','$description','$twitter','$facebook','$ip','$web','$youtube','$skype','$slots','$attribut','$login','$image') WHERE id="'.$id.'"';


Merci,
Leo

leo45vl11
Invité n'ayant pas de compte PHPfrance

29 juin 2012, 15:40

Je croit que c'est le WHERE id="'.$id.'"' mais je suis pas sur...

Quelqu'un a une idéé?

Merci,
Leo

Eléphant du PHP | 68 Messages

03 juil. 2012, 19:56

Des idéé?

ViPHP
ViPHP | 2577 Messages

03 juil. 2012, 20:19

<?PHP
$sql = 'UPDATE server SET (title,description,twitter,facebook,ip,web,youtube,skype,slots,attribut,login,image) VALUES ('$titre','$description','$twitter','$facebook','$ip','$web','$youtube','$skype','$slots','$attribut','$login','$image') WHERE id="'.$id.'"';
?>
<?PHP
$sql = "UPDATE server SET (title,description,twitter,facebook,ip,web,youtube,skype,slots,attribut,login,image) VALUES ('$titre','$description','$twitter','$facebook','$ip','$web','$youtube','$skype','$slots','$attribut','$login','$image') WHERE id=".$id;
?>
La coloration syntaxique doit t'inspirer...

Eléphant du PHP | 68 Messages

03 juil. 2012, 20:20

:? ... Merci :shock: