Tabel Mysql Si Registrer.PHP

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

Tabel Mysql Si Registrer.PHP

am incercat sa fac un tabel mysql care sa intregistreze mai multe date decat ce sunt oferite in scriptul de pe localhost si anume am incercat sa pun mai multe date de ex :
Oras , Tara , Varsta ... si nu am reusit codul arata cam asa :
Creaza tabel in mysql:

Cod: Selectaţi tot

<?php
header("Content-type: text/html; charset=utf-8");

include("bazadb.php");		

$sql = "CREATE TABLE `utilizatori` (nume VARCHAR(32), parola VARCHAR(32), email VARCHAR(45), aprobat DECIMAL(1,0) DEFAULT 0, ip VARCHAR(18), data VARCHAR(32), pass VARCHAR(18), tara VARCHAR(32) , oras VARCHAR(32) , varsta VARCHAR(32), id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY) CHARACTER SET utf8 COLLATE utf8_general_ci"; 
if (mysql_query($sql))
    echo '<br /><br /><br /><center><h4>Tabelul <u>utilizatori</u> a fost creat.</h4></center><br />'; 
else 
  echo '<br /><br /><br /><center><h4>Tabelul <u>utilizatori</u> nu a putut fi creat deoarece - '. mysql_errno(). ' : '. mysql_error(). '</h4></center>'; 

$sql2 = "CREATE TABLE `user_temp` (nume VARCHAR(32), incercari DECIMAL(1,0) DEFAULT 0, ip VARCHAR(18), data VARCHAR(32), tara VARCHAR(32) , oras VARCHAR(32) , varsta VARCHAR(32) , id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY) CHARACTER SET utf8 COLLATE utf8_general_ci"; 
if (mysql_query($sql2))
    echo '<br /><br /><br /><center><h4>Tabelul <u>user_temp</u> a fost creat.</h4></center><br />'; 
else 
  echo '<br /><br /><br /><center><h4>Tabelul <u>user_temp</u> nu a putut fi creat deoarece - '. mysql_errno(). ' : '. mysql_error(). '</h4></center>'; 
  
mysql_close(); 
?>
Si formulrul de inregistrare este cam asa :

Cod: Selectaţi tot

<?php
session_start();

include("bazadb.php");		

// Link-ul pt. revenire la pagina anterioara

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

function addUtilizator($nume, $pass, $email, $oras , $tara , $varsta) {
  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);
	$oras = addslashes($oras);
	$tara = addslashes($tara);
	$varsta = addslashes($varsta);
  }
  
  $q = "INSERT INTO `utilizatori` (nume, parola, email, aprobat, ip, data, pass, oras, tara, varsta) VALUES ('$nume', '$parola', '$email', '$aprobat', '$ip', '$data', '$pass', '$oras', '$tara', '$varsta')";
  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 </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) {
	
	$email = stripslashes($email);
	$from = 'From: Kalumea_YM@yahoo.com';
	$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, Echipa Kalumea Ne Puneti Contacta La Adressa De Email Kalumea_YM@yahoo.com";
	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>
<title>Pagina de inregistrare</title>
<body>'. $_SESSION['registered'].'
</body>
</html>';
   exit;
}
else {
  unset($_SESSION['reguname']);
  unset($_SESSION['registered']);
}

/* Functie pt. verificarea existentei caracterelor = , ` ' " in sir 
 * Pentru o securitate sporita */
function ve_sir($sirul) {
  $interzis = '/[=,`\'"]/';
  if (preg_match($interzis, $sirul)) { return false; }
  else { return true; }
}

// Determina daca va afisa sau nu formularul de Inregistrare
// Bazat pe datele completate si trimise
// Verifica baza de date si apeleaza functia care creaza contul nou

if(isset($_POST['subjoin']) && isset($_POST['nrv'])) {
  /* Se asigura ca toate campurile au fost completate */
  if(!$_POST['nume'] || !$_POST['pass'] || !$_POST['pass2'] || !$_POST['email'] || !$_POST['tara'] || !$_POST['oras'] || !$_POST['varsta']){
	$eror = 'Completati toate campurile.';
  }
  else {
    $nume = trim($_POST['nume']);
	$pass = trim($_POST['pass']);
    $email = trim($_POST['email']);
  }

  // Verifica daca parola este aceeasi cu cea din "Rescrie parola"
  if($pass!=$_POST['pass2']) {
	$eror = 'Trebuie sa scrieti aceeasi parola si in campul "Rescrie parola"</b>';
  }
  /* Verifica existenta caracterelor = , ` ' " in sir */
  else if(!ve_sir($nume) || !ve_sir($pass)) {
	$eror = 'Datele nu trebui sa contina nici unul dintre caracterele <b>= , ` \' "</b>';
  }
  /* Verifica lungimea numelui */
  else if(strlen($nume)<3 || strlen($nume)>32) {
	$eror = 'Numele trebuie sa contina minim 3 caractere si maxim 32.';
  }
  /* Verifica lungimea parolei */
  else if(strlen($pass)<4 || strlen($pass)>18) {
	$eror = 'Parola trebuie sa contina minim 7 caractere si maxim 18.';
  }
  /* Verifica forma adresei de email */
  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.';
  }
  /* Verifica numarul antispam */
  else if($_SESSION['nrv']!==$_POST['nrv']) {
	$eror = $_SESSION['nrv']. 'Numar de verificare incorect. '.$_POST['nrv'];
	unset($_SESSION['nrv']);
  }

  // Daca verificarea formularului a dat erori, afiseaza eroarea si link inapoi
  /* Altfel, verifica in BD daca numele sau email-ul sunt deja inregistrate */
  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']));

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

   $data_nrv = date(" j-F-Y, g:i a ");   
   $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 : &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" maxlength="42" id="email" /><br /><br />
		 <label for="oras">Oras : </label><input type="text" name="oras" maxlength="18" id="oras" /><br /><br />
		 <label for="tara">Tara : </label><input type="text" name="tara" maxlength="18" id="tara" /><br /><br />
		 <label for="varsta">Varsta : </label><input type="text" name="varsta" maxlength="3" id="varsta" /><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(); 
?>
Unde am gresit ce trebuie inlocuit si nu am facut Multumesc
„Uneori o greşeală poate fi tot ce este necesar pentru o realizare valoroasă.” — Henry Ford

MarPlo Mesaje:4343
La definire $_SESSION['registered'] , functia addUtilizator() trebuie apelata cu toti parametrii pe care i-ai mai adaugat.
In rest, prea mult cod de verificat. Probleme pot fi la partea de inregistrare, preluare valori, la formular sau ceva de sintaxa.
Specifica exact problema, sau eroarea, ce nu functioneaza

MelecaCristian Mesaje:176
poi acele date de la oras,tara,varsta doar acele nu apar in baza de date
„Uneori o greşeală poate fi tot ce este necesar pentru o realizare valoroasă.” — Henry Ford

MarPlo Mesaje:4343
MelecaCristian scrie:poi acele date de la oras,tara,varsta doar acele nu apar in baza de date
Nu apar fiindca nu sunt adaugate si la apelarea functiei addUtilizator(), care face adaugarea in MySQL.
In script e asa:

Cod: Selectaţi tot

$_SESSION['registered'] = addUtilizator(trim($_POST['nume']), $pass, trim($_POST['email']));
- Deci, trebuie adaugate (dupa modelul celor care sunt deja adaugate, sau dupa cum le preiei din formular).

MelecaCristian Mesaje:176
Ok deci va iesi ceva de genu ?

Cod: Selectaţi tot

$_SESSION['registered'] = addUtilizator(trim($_POST['nume']), $pass, trim($_POST['email']) , ($_POST['datainscriere']) ,($_POST['oras']));
sau trebuie sa pun si trim inaintea fiecareaia ca am facut ceva si mia dat goale acele locuri in baza de date da inainte de asta imi dadea NULL
„Uneori o greşeală poate fi tot ce este necesar pentru o realizare valoroasă.” — Henry Ford

MarPlo Mesaje:4343
trim() sterge spatiile goale de la capetele sirului, nu afecteaza adaugarea sau nu in baza de date.
Iar intre parantezele functiei, adauga variabilele separate prin virgula, fara alte paranteze.
numefunctie($val1, $val2, $val3);