2011-08-30 96 views
1

表單提交後,瀏覽器只顯示空白頁面。沒有其他的。我已啓用錯誤報告。在PHP日誌中沒有錯誤。也試過(如你所見)echo $sql; die();。仍然沒有結果。如何解決它?我的代碼有什麼問題?我的PHP代碼(處理申請表單的數據)看起來像發佈PHP-MySQL註冊表格

<?php 
require '../includes/db.php'; 
require '../includes/ipurl.php'; 
require '../includes/common.php'; 
$page = 'signup'; 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 


if ($_POST['submit'] == 'Tamam') { 
    $err = array(); 
    foreach ($_POST as $key => $value) { 
     $data[$key] = filter($value); 
    } 
    if (empty($data['fname']) || strlen($data['fname']) < 2 || empty($data['mname']) || strlen($data['mname']) < 2 || empty($data['lname']) || strlen($data['lname']) < 2) { 
     $err[ ] = 1; 
    } 

    if (!isUserID($data['login'])) { 
     $err[ ] = 2; 
    } 

    if (!isEmail($data['email'])) { 
     $err[ ] = 3; 
    } 

    if (!checkPwd($data['pwd'], $data['pwd2'])) { 
     $err[ ] = 4; 
    } 

    $pwd = PwdHash($data['pwd']); 

    $host  = $_SERVER['HTTP_HOST']; 
    $host_upper = strtoupper($host); 
    $path  = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); 

    $activ_code = rand(1000, 9999); 

    $email = $data['email']; 
    $login = $data['login']; 
    $dob = date('Y-m-d', strtotime($data['dob'])); 
    $age = date("Y") - date('Y', strtotime($data['dob'])); 
    $type = $data['type']; 


    $rs_duplicate = $db->query("select count(*) as total from users where email='$email' OR login='$login'") or die($db->error); 
    list($total) = $rs_duplicate->fetch_row(); 

    if ($total > 0) { 
     $err[ ] = 5; 
    } 

    if (isset($type)) { 
     if ($type == 1) { 
      $region  = $data['region']; 
      $school  = $data['school']; 
      $class  = $data['class']; 
      $group  = 0; 
      $subject = 0; 
      $university = 0; 
      $profession = 0; 
     } 
     if ($type == 2) { 
      $group  = $data['group']; 
      $region  = $data['region']; 
      $school  = $data['school']; 
      $class  = $data['class']; 
      $subject = 0; 
      $university = 0; 
      $profession = 0; 

     } 
     if ($type == 3) { 
      $group  = 0; 
      $region  = 0; 
      $school  = 0; 
      $class  = 0; 
      $subject = 0; 
      $university = $data['university']; 
      $profession = $data['profession']; 
     } 
     if ($type == 4) { 
      $group  = 0; 
      $region  = 0; 
      $school  = 0; 
      $class  = 0; 
      $university = 0; 
      $profession = 0; 
      $subject = $data['subject']; 
     } 
    } 
    if (!isset($type)) { 
     $err[ ] = 9; 
    } 
    if (empty($err)) { 
     $sql = "INSERT INTO users 
(level,fname, mname, lname, dob, age, reg_date, phone, email, login, pwd, type, `group`, region, school, class, ip, subject, ban, university, profession, activation_code) 
VALUES 
('1','$data[fname]', '$data[mname]', '$data[lname]', '$dob', '$age', now(), '$data[phone]', '$email', '$login', '$pwd', '$type', '$group', '$region', '$school', '$class', '$ip', '$subject', NULL, '$university', '$profession', '$activ_code')"; 
     echo $sql; die(); 
     $result = $db->query($sql) or die(printf("Bazaya daxiletmə zamanı səhv: %s\n", $db->error)); 
     $id  = $db->insert_id; 
     $md5_id = md5($id); 
     $db->query("update users set md5_id='$md5_id' where id='$id'") or die(printf("Bazaya daxiletmə zamanı səhv: %s\n", $db->error)); 
     include "../includes/success.php"; 
    } 

} else if (!empty($err)) { 
    include "../includes/error.php"; 
} 
?> 

順便說功能filtercommon.php殺毒所有帖子

function filter($data) { 
    $data = trim(htmlentities(strip_tags($data))); 

    if (get_magic_quotes_gpc()) 
     $data = stripslashes($data); 

    $data = mysql_real_escape_string($data); 

    return $data; 
} 

回答

2

我覺得你一個非空的錯誤陣列檢查應在檢查是否有任何錯誤的地方之後向上移動一步。

... 
    if (empty($err)) { 
     $sql = "INSERT INTO users 
(level,fname, mname, lname, dob, age, reg_date, phone, email, login, pwd, type, `group`, region, school, class, ip, subject, ban, university, profession, activation_code) 
VALUES 
('1','$data[fname]', '$data[mname]', '$data[lname]', '$dob', '$age', now(), '$data[phone]', '$email', '$login', '$pwd', '$type', '$group', '$region', '$school', '$class', '$ip', '$subject', NULL, '$university', '$profession', '$activ_code')"; 
     echo $sql; die(); 
     $result = $db->query($sql) or die(printf("Bazaya daxiletmə zamanı səhv: %s\n", $db->error)); 
     $id  = $db->insert_id; 
     $md5_id = md5($id); 
     $db->query("update users set md5_id='$md5_id' where id='$id'") or die(printf("Bazaya daxiletmə zamanı səhv: %s\n", $db->error)); 
     include "../includes/success.php"; 
    } else if (!empty($err)) { 
     include "../includes/error.php"; 
    } 
} 
+0

thx非常多兄弟。現在它工作 –

2

我會強烈建議得到安裝在開發機器上的XDebug,並使用類似的NetBeans,Eclipse的PDT IDE或更好PHPStorm嘗試設置你的代碼中的斷點,看在它打破了哪一點。

您可以在這裏得到了XDebug:http://xdebug.org

或者,退一步,並添加以下行

exit("i was here!"); 

在1號線,首先確定腳本實際運行,如果您可以逐步查看輸出結果,將其向下移動一行,保存並重新運行該腳本,然後沖洗並重復,直至其中斷。

我在這個片段中假設爲好,雖然你有錯誤報告打開,有可能是代碼行中的任何3個文件,你都包括轉回來再次關閉,如:

error_reporting(0); 

或甚至:

ini_set('display_errors','Off');