Eroare verificare date din formular si baza de date

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje:328

Eroare verificare date din formular si baza de date

Probleme la codu asta:
Orice nume scriu zice ca exista in baza de date.
La fel si la id-ul de messenger.
Am asa in formularul de inregistrare :

Cod: Selectaţi tot

=php<?php 
ini_set('display_errors',1);
error_reporting(E_ALL);
include('conectare.php');

$user_bd = mysql_query("SELECT `nume`,`idm` FROM membri");
$user_baza = mysql_fetch_array($user_bd);

// Se defineste un Header pt. a utiliza setul de caractere cu format UTF-8

$mesaj = '';          // Variabila folosita pt. mesajul ce va fi afisat pt. utilizator

// Se verifica daca sunt primite datele de la formular
if($_SERVER['REMOTE_ADDR']);
if (isset($_POST['nume']) && isset($_POST['parola']) && isset($_POST['idm']) && isset($_POST['select1']) && isset($_POST['select2']) && isset($_POST['zi_nastere']) && isset($_POST['luna_nastere']) && isset($_POST['an_nastere']) && isset($_POST['sex']) && isset($_POST['stare']) && isset($_POST['interes']) && isset($_POST['descriere'])) {

  // Se filtreaza datele pt. eliminare posibile spatii exterioare si tag-uri
  $_POST = array_map("trim", $_POST);
  $_POST = array_map("strip_tags", $_POST);

  // Se verifica daca "magic_quotes_gpc()" este setat ON
  // Daca e ON, se aplica stripslashes() pentru a nu se adauga de 2 ori '\' cand va fi aplicat "mysql_real_escape_string()"
  if(get_magic_quotes_gpc()) { $_POST = array_map("stripslashes", $_POST); }

  // Se verifica daca au fost completate corect toate campurile
  // Daca au fost completate le preia in variabile, in caz contrar seteaza o variabila tip Array cu mesaj de eroare

  // Verifica daca Numele are cel putin 3 caractere si maxim 12
  if(strlen($_POST['nume'])>2 && strlen($_POST['nume'])<13) $nume = $_POST['nume'];
  else $eroare[] = 'Numele de <b>Utilizator</b> trebuie sa contina intre 3 si 12 caractere';

// Verifica daca exista numele in baza de date //
if (strtolower($_POST['nume']) == $user_baza['nume']){
echo 'Acest nume de <b>Utilizator</b> exista pe site!';
} else

// Verifica daca exista numele in baza de date //
if (strtolower($_POST['idm']) == $user_baza['idm']){
echo 'Acest <b>Id de messenger</b> exista pe site!';
} else{
  // Verifica daca parola are cel putin 3 caractere si maxim 50
  if(strlen($_POST['parola'])>2 && strlen($_POST['parola'])<51) $parola = $_POST['parola'];
  else $eroare[] = '<b>Parola</b> trebuie sa contina intre 3 si 50 caractere';

  // Verifica daca id-ul de messenger are cel putin 5 caractere si maxim 50
  if(strlen($_POST['idm'])>4 && strlen($_POST['idm'])<51) $idm = $_POST['idm'];
  else $eroare[] = '<b>Id-ul de messenger</b> trebuie sa contina intre 5 si 50 caractere';

  // Verifica daca a fost selectata o valoare pt. 'tara'
  if(strlen($_POST['select1'])>2) $select1 = $_POST['select1'];
  else $eroare[] = 'Nu ai ales <b>Tara si Orasul</b>';

  // Verifica daca a fost selectata o valoare pt. 'oras'
  if(strlen($_POST['select2'])>2) $select2 = $_POST['select2'];
  else $eroare[] = 'Nu ai ales <b>Orasul</b>';

  // Verifica daca a fost selectata o valoare pt. 'ziua de nastere'
  if(strlen($_POST['zi_nastere'])>1) $zi_nastere = $_POST['zi_nastere'];
  else $eroare[] = 'Nu ai ales <b>Ziua de nastere</b>';
 
 // Verifica daca a fost selectata o valoare pt. 'luna de nastere'
  if(strlen($_POST['luna_nastere'])>0) $luna_nastere = $_POST['luna_nastere'];
  else $eroare[] = 'Nu ai ales <b>Luna de Nastere</b>';
 
 // Verifica daca a fost selectata o valoare pt. 'anul de nastere'
  if(strlen($_POST['an_nastere'])>2) $an_nastere = $_POST['an_nastere'];
  else $eroare[] = 'Nu ai ales <b>Anul de Nastere</b>';

 // Verifica daca a fost selectata o valoare pt. 'sex'
  if(strlen($_POST['sex'])>2) $sex = $_POST['sex'];
  else $eroare[] = 'Nu ai ales <b>Sexul</b>';
 
// Verifica daca a fost selectata o valoare pt. 'stare'
  if(strlen($_POST['stare'])>2) $stare = $_POST['stare'];
  else $eroare[] = 'Nu ai ales <b>Situatia amoroasa</b>';
  
// Verifica daca a fost selectata o valoare pt. 'interes'
  if(strlen($_POST['interes'])>2) $interes = $_POST['interes'];
  else $eroare[] = 'Nu ai ales <b>Interesul</b>';

// Verifica daca descrierea are cel putin 10 caractere si maxim 200
  if(strlen($_POST['descriere'])>10 && strlen($_POST['descriere'])<201) $descriere = $_POST['descriere'];
  else $eroare[] = '<b>Descrierea</b> trebuie sa contina intre 10 si 200 caractere';

 // Verifica daca a fost selectata o poza

if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1); 
else $eroare[] = 'Nu ai ales <b>Poza</b>';

$max_size=500;

if($_FILES['fileup']['size'] < $max_size*1000);
else $eroare[] = '<b>Poza</b> trebuie sa fie de maxim 500 Kb';

// Daca nu exista nici un mesaj de eroare, filreaza datele cu mysql_real_escape_string() si le adauga in baza de date
  // Altfel, in cazul vreunei erori, adauga in variabila $mesaj
  if (!isset($eroare)) {
    include('conectare.php');         // Include fisierul pt. conectare-selectare baza de dat

// Se aplica functia de filtrare mysql_real_escape_string()

$nume = mysql_real_escape_string(strtolower($nume));
$parola = mysql_real_escape_string(md5($parola));
$idm = mysql_real_escape_string(strtolower($idm));
$tara = mysql_real_escape_string($select1); 
$oras = mysql_real_escape_string($select2); // la fel si la oras (nu modifica nici in sql)
$zi_nastere = mysql_real_escape_string($zi_nastere);
$luna_nastere = mysql_real_escape_string($luna_nastere);
$an_nastere = mysql_real_escape_string($an_nastere);
$sex = mysql_real_escape_string($sex);
$stare = mysql_real_escape_string($stare);
$interes = mysql_real_escape_string($interes);
$descriere = mysql_real_escape_string($descriere);
$ipreg = $_SERVER['REMOTE_ADDR'];
setlocale(LC_TIME, array('ro.utf-8', 'ro_RO.UTF-8', 'ro_RO.utf-8', 'ro', 'ro_RO', 'ro_RO.ISO8859-2'));
date_default_timezone_set('Europe/Bucharest'); 
$dtreg = strftime('%d-%B-%Y ora %H:%M:%S');
$ipvisit = $_SERVER['REMOTE_ADDR'];
setlocale(LC_TIME, array('ro.utf-8', 'ro_RO.UTF-8', 'ro_RO.utf-8', 'ro', 'ro_RO', 'ro_RO.ISO8859-2'));
date_default_timezone_set('Europe/Bucharest'); 
$dtvisit = strftime('%d-%B-%Y ora %H:%M:%S');    

// Acum se adauga mai in siguranta aceste date in MySQL
    $sql = "INSERT
 INTO `membri` (`nume`, `parola`, `idm`, `tara`, `oras`, `zi_nastere`, 
`luna_nastere`, `an_nastere`, `sex`, `stare`, `interes`, `descriere`, 
`ipreg`, `dtreg`, `ipvisit`, `dtvisit`) VALUES ('$nume', '$parola', '$idm', '$tara', '$oras', '$zi_nastere', '$luna_nastere', '$an_nastere', '$sex', '$stare', '$interes', '$descriere', '$ipreg', '$dtreg', '$ipvisit', '$dtvisit')";
	if (mysql_query($sql, $connect)) {
	  $mesaj = "
<div id=mesaj-succes-inregistrare>Inregistrarea a fost efectuata cu succes. Acum te poti loga in contul tau
<meta http-equiv='refresh' content='5; url=/profil-$nume.php' />";
	  $nume = 'exista';  $idm = 'idm exista';
	}    else $mesaj = '<div id=eroare-inregistrare>Datele nu au putut fi adaugate '. mysql_error(). '</div>';

	mysql_close($connect);
  }
  else $mesaj = '<font color="red">'. implode('<br />', $eroare). '</font>';
}
}
echo $mesaj;
?>

MarPlo Mesaje:4343
Problema e la acest cod:

Cod: Selectaţi tot

$user_bd = mysql_query("SELECT `nume`,`idm` FROM membri");
$user_baza = mysql_fetch_array($user_bd);
Fiindca nu are o conditie WHRE si cu LIMIT 1, selecteaza toarte randurile cu "nume" si "idm", iar $user_baza contine un array bidimensional, cu array pt. fiecare rand.
Cred ca ar trebui sa stergi acele linii de cod, si sa adaugi in conditia if() asa (ca parte de cod ce trebuie sa o pui in scriptul de sus):

Cod: Selectaţi tot

$user_bd = mysql_query("SELECT `nume`,`idm` FROM membri WHERE nume='". $_POST['nume'] ."' OR idm='". $_POST['idm'] ."' LIMIT 1");
$user_baza = mysql_fetch_array($user_bd);

// Verifica daca exista numele in baza de date //
if (strtolower($_POST['nume']) == $user_baza['nume']){
echo 'Acest nume de <b>Utilizator</b> exista pe site!';
} else

// Verifica daca exista numele in baza de date //
if (strtolower($_POST['idm']) == $user_baza['idm']){
echo 'Acest <b>Id de messenger</b> exista pe site!';
} else{
  // Restul codului
} 
In rest, daca mai sunt si alte erori /probleme in script nu stiu, prea mult cod de verificat.

cadou Mesaje:328
Acum inregistreaza chiar daca exista in baza de date :lol:.

Subiecte similare