Naval
my code doesnt allow me to ADD or ALTER the DB tables
can you take a look and tell me why ?
after you told me to download the new one in order to save the path to uploaded images it doesnt ALTER or ADD a new table
thank you
my code doesnt allow me to ADD or ALTER the DB tables
can you take a look and tell me why ?
after you told me to download the new one in order to save the path to uploaded images it doesnt ALTER or ADD a new table
Code:
<?php
# ----------------------------------------------------
# -----
# ----- This script was created by DB Technosystems.com
# -----
# ----- [URL]http://www.dbtechnosystems.com[/URL]
# -----
# ----------------------------------------------------
error_reporting(55);
session_start();
$_SESSION[error] = "";
$error = "";
$length_array = array ("A" => "30", "B" => "60", "C" => "200", "D" => "500", "E" => "65536", "F" => "30", "G" => "60", "H" => "200", "J" => "500", "I" => "65536", "e" => "100");
if ($_SERVER['REQUEST_METHOD'] != 'POST'){
$error = "No direct access is allowed!";
include("dbts_ABVFP_errorpage.php");
exit;
}
function RecursiveMkdir($path)
{
if (!file_exists($path)) {
RecursiveMkdir(dirname($path));
mkdir($path, 0777);
}
}
require ("dbts_ABVFP_config.php");
$dbts_Formid = $_POST['Formid'];
$ndformurl1 = $_SERVER['HTTP_REFERER'];
if ($dbts_Formid == "") {
$error = "I cannot process the form. The form has not been correctly setup. !";
include ("dbts_ABVFP_errorpage.php");
exit;
}
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE){
$error = "Could not connect to the Database Server. Please check user details !";
mysql_close($db);
include ("dbts_ABVFP_errorpage.php");
exit;
}
mysql_select_db($db_name, $db);
if (!mysql_select_db($db_name, $db)) {
$error = "Could not select Database. Please check user details !";
mysql_close($db);
include ("dbts_ABVFP_errorpage.php");
exit;
}
$query = "SELECT Formname, Site, Formurl, Max_filesize, Uploadfolder, Emailaddress, EmailSubject, Emailheader, Emailfooter, Thankyoupage, Errorpage, Autoresponder, Include_email, Autoresponder_EmailSubject, Autoresponder_From, Autoresponder_Emailheader, Autoresponder_Emailfooter, Database_Store FROM ABVFP_Forms WHERE Formid= '$dbts_Formid'";
$result = mysql_query($query, $db);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
if ($row =="") {
$error = "I cannot process the form. The form has not been correctly setup. !";
mysql_close($db);
include ("dbts_ABVFP_errorpage.php");
exit;
}
// -------- RECEIVIMG CONFIGURATION VARIABLES FROM THE DB -----------
$ndsite = $row[Site] ;
$ndformurl = $row[Formurl] ;
$ndfilesize = $row[Max_filesize] ;
$ndmailsubject = $row[EmailSubject] ;
$ndmailfirstline = $row[Emailheader] ;
$ndmaillastline = $row[Emailfooter] ;
$autoresponderfirstline = $row[Autoresponder_Emailheader] ;
$autoresponderlastline = $row[Autoresponder_Emailfooter] ;
$autoresponder = $row[Autoresponder] ;
$autoresponderfrom = $row[Autoresponder_From] ;
$autorespondersubject = $row[Autoresponder_EmailSubject] ;
$nduploadfolder = $row[Uploadfolder] ;
$returnpage = $row[Thankyoupage] ;
$errorpage = $row[Errorpage] ;
$ndmailaddress = $row[Emailaddress] ;
$ndincludeemail = $row[Include_email] ;
$ndDatabase_Store = $row[Database_Store] ;
//Captcha Verification
if (isset($_POST['captcha_code'])) {
if (isset($_SESSION['random_txt']) && md5($_POST['captcha_code']) == $_SESSION['random_txt']) {
unset($_POST['captcha_code'],$_SESSION['random_txt']);
}
else {
$_SESSION[error] = "The verification code you have entered is not correct! Please go back and try again.";
header("Location: $errorpage");
exit;
}
}
//Finding out if there are more than email addresses to receive the email
$ndmailaddress1 = explode(",", $ndmailaddress);
//Setting the autoresponder "From" email address
if (count($ndmailaddress1 ==0))
{
$ndmailaddress2 = $ndmailaddress;
}
if (count($ndmailaddress1 >=1)) {
$ndmailaddress2 = $ndmailaddress1[0];
}
// Fix the path if www. is missing or we are in the index page
// This is to avoid common error with www. missing, or Form URL containing the "index.html" etc.
// It also strips the slash if the referer is the index page, common error when the user doesn't add the slash in the form URL field.
if (substr($ndformurl1, 0, 7) == "http://" and substr_count($ndformurl1, 'http://www.') == 0) {
$ndformurl1 = "<A href="http://www.".substr($ndformurl1">http://www.".substr($ndformurl1, 7, strlen($ndformurl1)-7);
}
if (substr($ndformurl1, -1, 1) == "/") {
$ndformurl1 = substr($ndformurl1, 0, strlen($ndformurl1)-1);
}
if (substr_count($ndformurl1 , '/index') > 0) {
$ndformurl2 = explode("/index", $ndformurl1 );
$ndformurl1 = $ndformurl2[0];
}
if (substr($ndformurl, 0, 7) != "http://") {
$ndformurl = "<A href="http://".$ndformurl">http://".$ndformurl;
}
if (substr_count($ndformurl , '/index') > 0) {
$ndformurl2 = explode("/index", $ndformurl );
$ndformurl = $ndformurl2[0];
}
if (substr($ndformurl, -1, 1) == "/") {
$ndformurl = substr($ndformurl, 0, strlen($ndformurl)-1);
}
if ($ndformurl1 != "") {
if ($ndformurl1 != $ndformurl) {
$error = "Illegal Form Submission \n";
}
}
// -------- RECEIVIMG FIELDNAMES VALUES AND VALIDATION DETAILS------
$internalfields = array ("submit", "reset", "formid","send", "captcha_code");
$i = "0";
reset ($HTTP_POST_VARS);
while (list ($key, $val) = each ($HTTP_POST_VARS)) {
if (!in_array(strtolower($key), $internalfields)) {
$fieldname = trim($key);
$fieldlenght = strlen(trim($key));
$realfieldlength = $fieldlenght;
if (substr($fieldname, -3, 1) == "-") {
$ndLast = substr($fieldname, -1, 1);
if ($ndLast == "R") {
$R[$i] = "R";
$V[$i] = substr($fieldname, -2, 1);
} else {
$V[$i] = substr($fieldname, -1, 1);
$R[$i] = substr($fieldname, -2, 1);
}
$realfieldlength = $fieldlenght-3;
}
if (substr($fieldname, -2, 1) == "-") {
$ndLast = substr($fieldname, -1, 1);
if ($ndLast == "R") {
$R[$i] = "R";
} else {
$V[$i] = substr($fieldname, -1, 1);
}
$realfieldlength = $fieldlenght-2;
}
// ------ Checking for multiple Choice Values ---------
@$fieldvalue = $_POST[$key];
if (is_array($fieldvalue)) {
@$fieldvalue = @implode(", ",$_POST[$key]);
}
// ----Setting the clear Field Names and Values-------
$fieldname = substr($key, 0, $realfieldlength);
if ($fieldname == "Email")
{
$ndemail = $fieldvalue;
}
$ndfieldname[] = addslashes($fieldname);
$ndfieldname_final[] = ucwords(str_replace("_", " ", $fieldname));
$ndfieldvalue[] = $fieldvalue;
$i = $i + 1 ;
}
}
// ------RECEIVING FILE VARIABLES--------------------
reset ($_FILES);
$i = 0;
while (list ($key, $val) = each ($_FILES)) {
if ($_FILES[$key]['name']!="") {
$upload_Name1 = ($_FILES[$key]['name']);
$upload_Name[] = str_replace(" ", "_", $upload_Name1);
$upload_Size[] = ($_FILES[$key]['size']);
$upload_Temp[] = ($_FILES[$key]['tmp_name']);
$upload_Type[] = ($_FILES[$key]['type']);
$uploadlink[] = "$nduploadfolder/$upload_Name[$i] \n";
$ndfieldname[] = $key;
$ndfieldname_final[] = ucwords(str_replace("_", " ", $key));
$ndfieldvalue[] = $uploadlink[$i];
// if the upload succeded, the file will exist
if (file_exists($upload_Temp[$i])){
// check to make sure that it is an uploaded file and not a system file
if(is_uploaded_file($upload_Temp[$i])){
// open the file for a binary read
$file = fopen($upload_Temp[$i],'rb');
// read the file content into a variable
$data1 = fread($file,filesize($upload_Temp[$i]));
// close the file
fclose($file);
// now we encode it and split it into acceptable length lines
$data[] = chunk_split(base64_encode($data1));
}
$i = $i + 1;
}
}
// checking for validation and injection
$crack_value = urldecode($ndfieldvalue[$i]);
if (eregi("(\r|\n|%0a|%0d|content-type:|bcc:|cc:|to:|content-type:)", $crack_value)) {
$error .= "The field $ndfieldname[$i] contained e-mail headers in the value submitted.
This seems to be a cracking attempt and the message has not been sent.!\n";
echo "Fieldvalue = $ndfieldvalue[$i] <br>";
}
// Check for required fields
if ($R[$i] == "R") {
if (strlen($ndfieldvalue[$i]) == 0) {
$error .= "The field $ndfieldname[$i] is missing !\n";
}
}
// Check for Email field
if ($V[$i] == "e") {
if (trim($ndfieldvalue[$i]) != "") {
$fieldtype[$i] = "VARCHAR (100)" ;
if (! ereg('[A-Za-z0-9_-]+\@[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+', $ndfieldvalue[$i])) {
$error .= "Your $ndfieldname[$i] field (email address) seems incorrect !\n";
}
if (substr_count($ndfieldvalue[$i] , [EMAIL="'@'"]'@'[/EMAIL]) > 1) {
$error .= "The field $ndfieldname[$i] can only contain the @ character once !\n";
}
}
}
// Check for Length, Validation type, and set the DB column type
if ($V[$i] !="" and $V[$i] !="N" and $V[$i] !="e") {
if ($length_array[$i] <= 255) {
$column_type = "VARCHAR";
}
else {
$column_type = "TEXT";
}
$fieldtype[$i] = $column_type."(".$length_array[$V[$i]].")" ;
if (strlen($ndfieldvalue[$i]) > $length_array[$V[$i]]) {
$error .= "The field $ndfieldname[$i] must be less than ".$length_array[$V[$i]]." characters !\n";
}
if ($V[$i] =="A" or $V[$i] =="B" or $V[$i] =="C" or $V[$i] =="D" or $V[$i] =="E") {
if (substr_count($ndfieldvalue[$i] , [EMAIL="'@'"]'@'[/EMAIL]) > 0 or substr_count($ndfieldvalue[$i] , 'http://') >0 or substr_count($ndfieldvalue[$i] , 'www.') > 0 ) {
$error .= "The field $ndfieldname[$i] cannot contain the [EMAIL="'@'"]'@'[/EMAIL], 'http://' and 'www.' characters !\n";
}
}
if ($V[$i] =="F" or $V[$i] =="G" or $V[$i] =="H" or $V[$i] =="J" or $V[$i] =="I") {
if (substr_count($ndfieldvalue[$i] , [EMAIL="'@'"]'@'[/EMAIL]) > 1 or substr_count($ndfieldvalue[$i] , 'http://') >1 or substr_count($ndfieldvalue[$i] , 'www.') > 1 ) {
$error .= "The field $ndfieldname[$i] cannot contain the [EMAIL="'@'"]'@'[/EMAIL], 'http://' and 'www.' characters more than once!\n";
}
}
}
// Check for Numeric field
if ($V[$i] == "N") {
if ($ndfieldvalue[$i] != "") {
if (!is_numeric($ndfieldvalue[$i])) {
$error .= "The field $ndfieldname[$i] should be only numbers / No spaces allowed $nerror !\n";
}
}
$fieldtype[$i] = "VARCHAR (30)";
}
if ($V[$i] =="") {
$fieldtype[$i] = "VARCHAR (250)";
}
}
// ------------CHECKING FOR MAX UPLOADED FILE SIZE ----------------------
$ndfilesize1= $ndfilesize*1024;
for ($i = 0; $i < count($upload_Name); $i++) {
if ($upload_Name[$i] != "" ) {
if ($upload_Size[$i] >= $ndfilesize1) {
$error .= "The size of $upload_Name[$i] is bigger than the allowed $ndfilesize Kb !\n";
}
}
}
// If there is an error, send to the errorpage
if ($error != "") {
$_SESSION[error] = $error;
header("Location: $errorpage");
echo "Error = $error <br> Errorpage = $errorpage";
exit;
}
//--------- Move the files to destination----------------
$nduploadfolder1 = basename($nduploadfolder);
for ($i = 0; $i < count($upload_Name); $i++) {
if ($upload_Size[$i] < $ndfilesize1 and $upload_Size[$i] >0)
{
$uploadFile = "$nduploadfolder1/".$upload_Name[$i];
if (!is_dir(dirname($uploadFile)))
{
@RecursiveMkdir(dirname($uploadFile));
}
else
{
@chmod(dirname($uploadFile), 0777);
}
@move_uploaded_file( $upload_Temp[$i] , $uploadFile);
chmod($uploadFile, 0644);
}
}
//------------- Find Server date and Time--------------------
$date = date("l jS F Y, g:i A");
$Submission_Date = date("d/m/Y");
//----------------- Find Browser and IPaddress --------------
$browser =$_SERVER['HTTP_USER_AGENT'];
$ip = $_SERVER['REMOTE_ADDR'];
// ---- STORING FIELD VALUES IN THE DATABASE TABLE ---------------
if ($ndDatabase_Store == "Yes") {
$dbts_table = "_Form_Nr_$dbts_Formid";
// Check if the table exists already ------------
$result = mysql_list_tables($db_name);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$key= "Tables_in_$db_name";
$tablename[] = $row[$key];
}
if (!in_array($dbts_table, $tablename)) {
$query = "CREATE TABLE `$dbts_table` (";
$query .='`Record_Nr` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ';
for ($i = 0; $i < (count($ndfieldname)); $i++) {
//$ndmailbody .= "$ndfieldname[$i] = $ndfieldvalue[$i] \r\n";
$ndfieldname_tolower = strtolower($ndfieldname[$i]);
$query .= "`$ndfieldname_tolower` $fieldtype[$i], ";
}
$query .='`Submission_Date` VARCHAR (20),';
$query .='`IP_Address` VARCHAR (15)';
$query .=' )'
. ' ENGINE = myisam;';
}
if (mysql_query($query, $db)){
$message = "Installation completed";
}
else {
$_SESSION[error] = "There has been an unknown error during Form Table creation. Invalid Query = $query: Please contact support at [EMAIL="info@dbtechnosystems.com"]info@dbtechnosystems.com[/EMAIL]";
mysql_close($db);
header("Location: dbts_ABVFP_errorpage.php");
exit;
}
// Check if the field exists in the table, to avoid crashes
$result = mysql_list_fields($db_name, $dbts_table, $db);
$fieldnumber = mysql_num_fields($result);
for ($i = 0; $i < $fieldnumber; $i++) {
$fieldstable[$i] = strtolower(mysql_field_name($result, $i));
$last_useful = $fieldnumber - 3;
}
//--- check if all fields exist in the database or columns have to be added
for ($i = 0; $i < (count($ndfieldname)); $i++) {
$ndfieldname_tolower = strtolower($ndfieldname[$i]);
$query = 'ALTER TABLE `'.$dbts_table.'` ';
if (!in_array($ndfieldname_tolower,$fieldstable)) {
$query .= 'ADD `'.$ndfieldname_tolower.'` '.$fieldtype[$i].' AFTER `'.$fieldstable[$last_useful].'`;';
$result = mysql_query($query);
if (!$result) {
$_SESSION[error] = "There has been an unknown error during Column addition. Invalid Query = $query .Please contact support at [EMAIL="info@dbtechnosystems.com"]info@dbtechnosystems.com[/EMAIL]";
mysql_close($db);
header("Location: dbts_ABVFP_errorpage.php");
exit;
}
}
$fieldstable[] = $ndfieldname_tolower;
}
@$query = "INSERT INTO `$dbts_table`(";
for ($i = 0; $i < count($ndfieldname); $i++) {
$dbfield = strtolower($ndfieldname[$i]);
//$dbvalue = $ndfieldvalue[$i];
if (in_array($dbfield,$fieldstable)) {
@$query .= "`$dbfield` ,";
}
}
@$query .= "`Submission_Date` ,";
@$query .= "`IP_Address` ";
@$query .= ")";
@$query .= "VALUES (";
for ($i = 0; $i < count($ndfieldname); $i++) {
$dbfield = strtolower($ndfieldname[$i]);
if (in_array($dbfield,$fieldstable)) {
@$query .= "\"$ndfieldvalue[$i]\",";
}
}
@$query .= "\"$Submission_Date\",";
@$query .= "\"$ip\"";
@$query .= ")" ;
$db = mysql_connect($db_host, $db_user, $db_password);
if (!$db) {
$_SESSION[error] = "There has been a connection problem at line 572:". mysql_error()."Please contact support at [EMAIL="info@dbtechnosystems.com"]info@dbtechnosystems.com[/EMAIL]";
mysql_close($db);
header("Location: dbts_ABVFP_errorpage.php");
exit;
}
$db_selected = mysql_select_db($db_name, $db);
if (!$db_selected) {
$_SESSION[error] = "There has been a connection problem at line 577:". mysql_error().". Please contact support at [EMAIL="info@dbtechnosystems.com"]info@dbtechnosystems.com[/EMAIL]";
mysql_close($db);
header("Location: dbts_ABVFP_errorpage.php");
exit;
}
//insert new record
$result = mysql_query($query);
if (!$result) {
$_SESSION[error] = "There has been a DB problem at line 588: Query=$query".mysql_error().". Please contact support at [EMAIL="info@dbtechnosystems.com"]info@dbtechnosystems.com[/EMAIL]";
mysql_close($db);
header("Location: dbts_ABVFP_errorpage.php");
exit;
}
mysql_close($db);
}
// ------------Building the mail ----------------------
if ($ndemail == "") {
$ndemail = $ndmailaddress2;
}
// generate a random string to be used as the boundary marker
$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
// now we'll build the message headers
$ndmailhead = "From: $ndemail\r\n" .
"MIME-Version: 1.0\r\n" .
"Content-Type: multipart/mixed;\r\n" .
" boundary=\"{$mime_boundary}\"";
for ($i = 0; $i < count($ndfieldname); $i++) {
$ndmailbody .= "$ndfieldname_final[$i] = \t".stripslashes($ndfieldvalue[$i])." \r\n";
}
$ndmailbody1 .= "$ndmailfirstline \r\n"
. "$ndmailbody \r\n"
. "$ndmaillastline \r\n"
. "-----------------------------------------------------------\n"
. "Date of submission : $date\r\n"
. "Browser : $browser\r\n"
. "IP address : $ip\r\n";
$ndmailbody1 = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$ndmailbody1 . "\n\n";
// now we'll process our uploaded files
if (count($upload_Name)>0) {
for ($i = 0; $i < count($upload_Name); $i++){
// now we'll insert a boundary to indicate we're starting the attachment
// we have to specify the content type, file name, and disposition as
// an attachment, then add the file content.
// NOTE: we don't set another boundary to indicate that the end of the
// file has been reached here. we only want one boundary between each file
// we'll add the final one after the loop finishes.
$type = $upload_Type[$i];
$name = $upload_Name[$i];
$ndmailbody1 .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data[$i] . "\n\n";
}
}
// here's our closing mime boundary that indicates the last of the message
$ndmailbody1.="--{$mime_boundary}--\n";
for ($i = 0; $i <= count($ndmailaddress1); $i++){
mail($ndmailaddress1[$i], $ndmailsubject, $ndmailbody1, $ndmailhead);
}
if ($autoresponder == "Yes")
{
if ($ndincludeemail == "Yes") {
$ndfromaddress = $ndmailaddress2;
}
else {
$ndfromaddress = "no_reply@";
if (substr_count($ndsite , 'http://www.') == 1) {
$ndfromaddress .= substr($ndsite, 11, strlen($ndsite)-11) ;
}
else if (substr_count($ndsite , 'http://') == 1) {
$ndfromaddress .= substr($ndsite, 7, strlen($ndsite)-7) ;
}
else if (substr_count($ndsite , 'www.') == 1) {
$ndfromaddress .= substr($ndsite, 4, strlen($ndsite)-4) ;
}
else{
$ndfromaddress .= $ndsite;
}
}
$ndmailsubject = $autorespondersubject;
$ndmailbody = "";
for ($i = 0; $i < (count($ndfieldname) - count($upload_Name)); $i++) {
$ndmailbody .= "$ndfieldname_final[$i] = ".stripslashes($ndfieldvalue[$i])." \r\n";
}
if (count($upload_Name)>0) {
$ndmailbody .= "You have also uploaded the following files: \r\n";
for ($i = 0; $i < count($upload_Name); $i++){
$k = $i +1;
$ndmailbody .= "File $k : $upload_Name[$i] \r\n" ;
}
}
$ndmailsubject = $autorespondersubject;
$ndmailhead = "MIME-Version: 1.0\r\n";
$ndmailhead .= "From: $autoresponderfrom < $ndmfromaddress >" . "\r\n";
$ndmailbody1 = "$autoresponderfirstline\n"
. "$ndmailbody\r\n"
. "$autoresponderlastline\r\n"
. "-----------------------------------------------------------\r\n"
. "Time of submission : $date\r\n"
. "-----------------------------------------------------------\r\n";
mail($ndemail, $ndmailsubject, $ndmailbody1, $ndmailhead);
}
header("Location: $returnpage");
?>
?>
thank you


Comment