2014-04-12 5 views
-1

PHP에서 'create table'에 문제가 있습니다. table의 이름은 등록 된 사용자의 이름입니다. 문제는 '$ 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

'---''주변 시세 및 점 제거를 표 $의 user'에게 –

+0

(!) 참고 만들기 : passwo에 대한 MD5를 사용하지 마십시오 저장; 그것은 오래되었고 "너무 빠르다"고 생각합니다. [** CRYPT_BLOWFISH **] (http://security.stackexchange.com/q/36471) 또는 PHP 5.5의 ['password_hash()'] (http://www.php.net/manual/ko/)를 사용하십시오. 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) 
)";