2014-04-12 166 views
-1

我在PHP中創建表格時遇到了問題。表格的名稱是註冊用戶的名稱。問題出在'$ nuovidati'。註冊腳本的工作,但不創建表.....使用php創建表格

代碼:

<?php 
    require('config.php'); 
    if(isset($_POST['registra'])) 
    { 
     $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; 
     $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; 
     $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : ''; 
     if (!get_magic_quotes_gpc()) { 
      $user = addslashes($user); 
      $pass = addslashes($pass); 
      $mail = addslashes($mail); 
     } 
     if(strlen($user) < 4 || strlen($user) > 12) 
      die('Nome Utente troppo corto, o troppo lungo'); 
     elseif(strlen($pass) < 4 || strlen($pass) > 12) 
      die('Password troppo corta, o troppo lunga'); 
     elseif(!eregi("^[a-z0-9][_\.a-z0-9-][email protected]([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail)) 
      die('Email non valida'); 
     elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1) 
      die('Nome Utente non disponibile'); 
     elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1) 
      die('Questo indirizzo email risulta gi&agrave; registrato ad un altro utente'); 
     else 
     { 
      $pass = md5($pass); 
      $strSQL = "INSERT INTO utenti (user,pass,mail)"; 
      $strSQL .= "VALUES('$user', '$pass', '$mail')"; 
      mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error()); 
      $index = 'modello.php'; 
      copy($index, $user) or die("Errore copia."); 
      $rin = basename($user, ".php").".php"; 
      rename($user, $rin); 
    $nuovidati = "CREATE TABLE ".$user." 
    (
      descrizione varchar(100) DEFAULT NULL, 
      data date NOT NULL, 
      entrata varchar(10000) NOT NULL, 
      uscita varchar(10000) DEFAULT NULL, 
      saldo varchar(100) DEFAULT NULL, 
      id mediumint(9) NOT NULL AUTO_INCREMENT 
    )"; 
mysql_query($nuovidati) OR die("Erroe: ".mysql_error()); 
      header('Location: registrato.php'); 
      exit; 
     } 
    } 
    ?> 

這裏是工作代碼:

$nuovidati = "CREATE TABLE $user 
(
     descrizione varchar(100) DEFAULT NULL, 
     data date NOT NULL, 
     entrata varchar(10000) NOT NULL, 
     uscita varchar(10000) DEFAULT NULL, 
     saldo varchar(100) DEFAULT NULL, 
     id mediumint(9) NOT NULL AUTO_INCREMENT, 
     primary key (id) 
)"; 
mysql_query($nuovidati) OR die("Errore: ".mysql_error()); 
+0

刪除引號和點左右'''--- CREATE TABLE $ user' –

+0

旁註 「$用戶。」:不要使用MD5的passwo儲存;這是舊的,並認爲太「快」。使用[** CRYPT_BLOWFISH **](http://security.stackexchange.com/q/36471)或PHP 5.5的['password_hash()'](http://www.php.net/manual/en/) function.password-hash.php)函數。另外,eregi()從PHP 5.3.0開始已經被拒絕了。依靠這個功能是非常不鼓勵的。 –

+0

弗雷德,不工作。 – Sisma

回答

0

我看來,像一個SQL錯誤,請嘗試這樣的:

"CREATE TABLE $user 
(
    id mediumint(9) NOT NULL AUTO_INCREMENT, 
    descrizione varchar(100) NULL DEFAULT NULL, 
    data date NOT NULL, 
    entrata varchar(10000) NOT NULL, 
    uscita varchar(10000) NULL DEFAULT NULL, 
    saldo varchar(100) NULL DEFAULT NULL, 
    PRIMARY KEY (id) 
)";