Eroare adaugare date in baza de date script logare

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

Eroare adaugare date in baza de date script logare

Buna,

Am editat putin scriptul de inregistrare/logare si am observat ca nu se adauga datele, nu inteleg unde am gresit, este posibil sa fie un flux prea mare de informatii dintr-o data?

Cod: Selectaţi tot

<?php
session_start();

include("bazadb.php");

$idfb = $_GET[1];
$numele = $_GET['2'];
$prenume = $_GET['3'];
$artist = $_GET['4'];
$ziuanasterii = $_GET['5'];
$emailfb = $_GET['6'];
$sex =$_GET['7'];
$sts = $_GET['8'];

$inapoi = '<br /><br /><b><a href="#" onclick="history.back()">Click aici</a></b> pentru a reveni la pagina anterioara.';

function addUtilizator($nume, $pass, $email, $judet, $tara, $datanasterii, $sex, $numefamilie, $prenume, $artist, $statusrelatie, $inaltime, $greutate, $despre, $religie, $idfb) {
  GLOBAL $conn, $aprobat, $inapoi;
  $data = time();
  $ip = $_SERVER['REMOTE_ADDR'];
  $parola = md5($pass);
  $nume1 = $nume;

  if(!get_magic_quotes_gpc()) {
	$nume = addslashes($nume);
	$pass = addslashes($pass);
	$parola = addslashes($parola);
	$email = addslashes($email);
$judet = addslashes($judet);
$tara = addslashes($tara);
$datanasterii = addslashes($datanasterii);
$sex = addslashes($sex);
$numefamilie = addslashes($numefamilie);
$prenume = addslashes($prenume);
$artist = addslashes($artist);
$statusrelatie = addslashes($statusrelatie);
$inaltime = addslashes($inaltime);
$greutate = addslashes($greutate);
$despre = addslashes($despre);
$religie = addslashes($religie);
$idfb = addslashes($idfb);
  }
  $q = "INSERT INTO `utilizatori` (nume, parola, email, aprobat, ip, data, pass, oras, tara, datanasterii, sex, numefamilie, prenume, artist, statusrelatie, inaltime, greutate, despre, religie, idfb) VALUES ('$nume', '$parola', '$email', '$aprobat', '$ip', '$data', '$pass', '$judet', '$tara', '$datanasterii', '$sex', '$numefamilie', '$prenume', '$artist', '$statusrelatie', '$inaltime', '$greutate', '$despre', '$religie', '$idfb)";
  if (mysql_query($q,$conn)) $mesaj = '<center><h1>Succes!</h1>
<p><font size="4">Multumim <b><font color="blue">'. $nume1. '</font></b>, inregistrarea s-a efectuat cu succes.</font></p><br />Acum va puteti autentifica <a href="../" title="Autentificare">Click aici</a></center>';
  else $mesaj = '<h1>Inregistrare nereusita</h1>In urma unei erori: <i>'. mysql_errno().' - '.mysql_error(). '</i> inregistrarea dv. pe numele <b> '. $nume1. '</b>, nu a putut fi realizata';
  $id = mysql_insert_id();  
  $link_confirm = 'http://'. $_SERVER['HTTP_HOST']. dirname($_SERVER['PHP_SELF']). '/recuper.php?mp='. $id. '&pm='. $parola;
  if ($aprobat==0) {
	// Trimite datele prin email
	$email = stripslashes($email);
	$from = 'From: noresponse@server.net';
	$subiect = "Confirmare Inregistrare";
	$mesaj = "               Buna ziua \n
	  Ati primit acest e-mail deoarece este nevoie sa confirmati inregistrarea. \n\n
	  Pentru a confirma inregistrarea, dati click pe link-ul urmator: \n
		  $link_confirm \n\n
	  Datele dv. de autentificare sunt urmatoarele: \n
		  Nume = $nume1 \n
		  Parola = $pass
		  \n\n\n
	  Cu respect, http://www.MarPlo.net";
	if (mail("$email", "Subiect: $subiect", $mesaj, $from)) {
	  $mesaj = '<center>Un mesaj cu link-ul pentru autentificare a fost trimis la adresa de e-mail <b>'. $email. '</b>.
		   <br /> Daca nu ati primit email-ul, verificati si in directorul Spam.<br /> Dupa confirmare va puteti autentifica. <a href="../">Click aici</a><br />
		   <br /><br />Multumim </center>';
	} 
	else { $mesaj = 'Exista o problema, verificati daca ati introdus corect datele.'; }
  }
  return $mesaj;
}



if(isset($_SESSION['registered']) && isset($_SESSION['reguname'])){

   echo '
<html>
<body>'. $_SESSION['registered'].'
</body>
</html>';
   exit;
}
else {
  unset($_SESSION['reguname']);
  unset($_SESSION['registered']);
}

function ve_sir($sirul) {
  $interzis = '/[=,`\'"]/';
  if (preg_match($interzis, $sirul)) { return false; }
  else { return true; }
}

if(isset($_POST['subjoin']) && isset($_POST['nrv'])) {
  /* Se asigura ca toate campurile au fost completate */
  if(!$_POST['nume'] || !$_POST['pass'] || !$_POST['pass2'] || !$_POST['email']) {
	$eror = 'Completati toate campurile.';
  }
  else {
    $nume = trim($_POST['nume']);
	$pass = trim($_POST['pass']);
    $email = trim($_POST['email']);
  }
  if($pass!=$_POST['pass2']) {
	$eror = 'Trebuie sa scrieti aceeasi parola si in campul "Rescrie parola"</b>';
  }

  else if(!ve_sir($nume) || !ve_sir($pass)) {
	$eror = 'Datele nu trebui sa contina nici unul dintre caracterele <b>= , ` \' "</b>';
  }

  else if(strlen($nume)<3 || strlen($nume)>32) {
	$eror = 'Numele trebuie sa contina minim 3 caractere si maxim 32.';
  }

  else if(strlen($pass)<7 || strlen($pass)>18) {
	$eror = 'Parola trebuie sa contina minim 7 caractere si maxim 18.';
  }

  else if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $email)) {
	$eror = 'Adresa de email incorecta.';
  }

  else if($_SESSION['nrv']!==$_POST['nrv']) {
	$eror = $_SESSION['nrv']. 'Numar de verificare incorect. '.$_POST['nrv'];
	unset($_SESSION['nrv']);
  }

  if (isset($eror)) {
	echo '<center><br /><br /><font size="+1" color="red">'. $eror.'</font>'.$inapoi. '</center>';
  }
  else {
	if(!get_magic_quotes_gpc()) {
	  $nume = addslashes($nume);
	  $email = addslashes($email);
	}

	$q = "SELECT nume, email from `utilizatori` WHERE `nume`='$nume' OR `email`='$email'";
	$result = mysql_query($q,$conn);


	if (mysql_numrows($result)>0) {
	  while ($rand = mysql_fetch_array($result, MYSQL_ASSOC)) {
		$nume_bd = stripslashes($rand['nume']);
		$email_bd = stripslashes($rand['email']);
	  }

	  if (strcasecmp($nume_bd, $nume)==0) {
		echo "Numele de utilizator: <strong>$nume</strong> este deja inregistrat, va rog alegeti altul.";
	  }
	
	  if (strcasecmp($email_bd, $email)==0) {
		echo "Adresa de email: <strong>$email</strong> a fost deja folosita pentru inregistrare.
			<br /> Daca v-ati inregistrat cu aceasta adresa de e-mail si ati uitat datele de autentificare, click <a href=\"recuper.php\">Recuperare date</a>.<br /><br />SAU";
	  }
	  echo "<center>$inapoi</center>";
	}
	else {

   
	  $_SESSION['reguname'] = trim($_POST['nume']);
	  $_SESSION['registered'] = addUtilizator(trim($_POST['nume']), $pass, trim($_POST['email']), trim($_POST['oras']), trim($_POST['tara']), trim($_POST['datanasterii']), trim($_POST['sex']), trim($_POST['numefamilie']), trim($_POST['prenume']), trim($_POST['artist']), trim($_POST['statusrelatie']), trim($_POST['inaltime']), trim($_POST['greutate']), trim($_POST['despre']), trim($_POST['religiel']), trim($_POST['idfb']));

	  echo '<meta http-equiv="Refresh" content="1;url='.$_SERVER['PHP_SELF'].'">';
	  exit;
	}
  }
}
else {


   $data_nrv = date(" j-F-Y, g:i a ");   // Pt. stabilire nr. verificare
   $nr_v = md5($data_nrv);
   if(isset($_SESSION['nrv'])) { unset($_SESSION['nrv']); }
   $_SESSION['nrv'] = substr($nr_v, 3, 5);

   echo '<script src="verific.js"></script>
<center><h1><u>Inregistrare</u></h1><br />';
	echo '<div align="center" style="width:400px; border:1px solid #aaaafe;">
         <p><br /><b> - Introduceti datele dv. de inregistrare si numarul de verificare: <font color="blue" size="4">'. $_SESSION['nrv']. '</font></b></p><br />
<form action="'. basename($_SERVER['PHP_SELF']). '" method="post" onsubmit="return regcheck(this)">
         <input type="hidden" name="nrv0" value="'. $_SESSION['nrv']. '" />
		 <label for="nume">Nume Utilizator: &nbsp;</label><input type="text" name="nume" maxlength="32" id="nume" /><br /><br />
                 <label for="pass">Parola: </label><input type="password" name="pass" maxlength="18" id="pass" /><br /><br />
		 <label for="pass2">Rescrie parola: </label><input type="password" name="pass2" maxlength="18" id="pass2" /><br /><br />
		 <label for="email">E-Mail: </label><input type="text" name="email" value="'. $email .'" maxlength="42" id="email" /><br /><br />


<input type="hidden" name="numefamilie" value="'. $numele .'" maxlength="32" id="numefamilie" />
<input type="hidden" name="prenume" value="'. $prenumele .'" maxlength="32" id="prenume" />
<input type="hidden" name="artist" value="'. $artist .'" maxlength="32" id="artist" />
<input type="hidden" id="datanasterii" value="'. $ziuanasterii .'" name="datanasterii" size="10" maxlength="10">
<input type="hidden" name="sex" value="'. $sex .'" maxlength="32" id="sex" />
<input type="hidden"  value="'. $sts .'" name="statusrelatie" maxlength="32" id="statusrelatie" />
<input type="hidden" name="idfb" value="'. $idfb .'" maxlength="32" id="idfb" />


 <label for="oras">Oras: </label><input type="text" name="oras" maxlength="32" id="oras" /><br /><br />
 <label for="tara">Tara:</label><input type="text" name="tara" maxlength="32" id="tara" /><br /><br />
 <label for="inaltime">Inaltime:</label><input type="text" name="inaltime" maxlength="32" id="inaltime" /><br /><br />
 <label for="greutate">Greutate:</label><input type="text" name="greutate" maxlength="32" id="greutate" /><br /><br />
 <label for="religie">Relgie:</label><input type="text" name="religie" maxlength="32" id="religie" /><br /><br />
 <label for="despremine">Despre mine:</label><textarea name="despre" id="despre"></textarea><br /><br />
		 
		 <label for="nrv">Nr. verificare: </label><input type="text" name="nrv" size="5" maxlength="6" id="nrv" /><br /><br />
		 <input type="submit" name="subjoin" value="Trimite">
</form>

</div></center>';
}

@mysql_close(); 
?>
Imi returneaza mesajul sa imi verific email-ul dar datele nu sunt adaugate in baza de date
Multumesc de ajutor !
„Uneori o greşeală poate fi tot ce este necesar pentru o realizare valoroasă.” — Henry Ford

MarPlo Mesaje:4343
Salut
Sunt cateva, multe greseli, doar la o scurta verificare.
Nu stiu de ce preiei datele cu $_GET cand din formular sunt trimise cu: method="post". In plus, ce sunt acele numere la $_GET: 1, 2, 3, ... 8, nu stiu.
Chiar daca dupa cum ai modificat, tu stii ca trebuie cu $_GET, $_GET[1] e gresit, trebuie '1' intre ghilimele.
In Instructiunea Insert de la $q lipseste ghilimea simpla de inchidere la $idfb.

Modificarile necesita sa cunosti scriptul /codul, si sa stii ce face ceea ce schimbi.
Daca mai sunt si alte greseli, nu stiu, prea mult cod de verificat.
Poti vedea cu:

Cod: Selectaţi tot

echo $q;
Instructiunea SQL transmisa la MySQL, si o poti copia si testa in PhpMyAdmin si vezi daca functioneaza si corectezi ce e gresit.
De asemenea, tabelul in baza de date sa contina colonele definite corespunzator pentu noile date ce trebuie adaugate.

MelecaCristian Mesaje:176
GET-urile acelea preiau datele de pe alta pagina :D

De accea sunt date pe hidde, nu avea rost sa le mai afiseze de 10 ori :D

Multumesc de sfat, am sa iau iarasi la puricat scriptul :D

Un weekend minunat!
„Uneori o greşeală poate fi tot ce este necesar pentru o realizare valoroasă.” — Henry Ford

Subiecte similare