2015-01-29 2 views
-3

У меня есть эта формаPHP скрипт для загрузки файла мешая

enter image description here

Если кнопка первого радио нажата, включен текстовое поле ниже, и если кнопка второго радио нажата, Upload File и первый отключен, наоборот. Он отлично работает, если выбрана опция загрузки файла, но если выбрана 1-я радиокнопка и загрузка файла отключена, она не вставляет данные в базу данных. :/Что нужно сделать, чтобы успешно отправить данные формы, даже если загрузка файла отключена/пуста?

КОД:

<form name="form" method="POST" enctype="multipart/form-data"> 
    <table width="416" height="245" border="1" align="center"> 
    <tr> 
    <td colspan="2">Transaction No: <input type="text" name="transaction_no" id="transaction_no" /> </td> 
    </tr> 
    <tr> 
    <td colspan="2" align="center">Please select the mode of payment</td> 
    </tr> 
    <tr> 
    <td width="183" align="center"><input name="rad" type="radio" onclick="enableField(this)" value="Smart Money" checked="checked"> 
    Smart Money</td> 
    <td width="201" align="center"><input name="rad" type="radio" onclick="enableField(this)" value="BPI"> BPI Bank Deposit</td> 
    </tr> 
    <tr> 
    <td align="center"><input type="text" name="contactno" id="contactno"></td> 
    <td align="center"><input name="filename" type="file" id="filename" disabled="disabled"/></td> 
    </tr> 
    <tr> 
    <td>Total amount sent:</td> 
    <td>&nbsp;<input type="text" name="totalsent" id="totalsent" /></td> 
    </tr> 
    <tr> 
    <td>Date sent:</td> 
    <td>&nbsp;<input type="text" name="datesent" id="datesent" /></td> 
    </tr> 
    <tr> 
    <td colspan="2" align="center"><input name="submit" type="submit" id="submit" value="Submit" /></td> 
    </tr> 
    </table> 
    <input type="hidden" name="MM_insert" value="form" /> 

    </form> 

PHP

<?php 

if(isset($_FILES['filename'])){ 
$errors = array(); 
$file_name = $_FILES['filename']['name']; 
$file_size =$_FILES['filename']['size']; 
$file_tmp =$_FILES['filename']['tmp_name']; 
$file_type=$_FILES['filename']['type']; 
$file_ext=strtolower(end(explode('.',$_FILES['filename']['name']))); 


$expensions= array("jpeg","jpg","png");   
if(in_array($file_ext,$expensions)=== false){ 
    $errors[]="extension not allowed, please choose a JPEG or PNG file."; 
} 
if($file_size > 2097152){ 
$errors[]='File size must be excately 2 MB'; 
}   

// pag walang error...  
if (empty($errors)==true) { 

    // upload the file... 
    move_uploaded_file($file_tmp,"uploads/".$file_name); 

    $servername = "localhost"; 
    $username = "root"; 
    $password = " "; 
    $dbname = "admin"; 

    // create new record in the database 
    include ("dbinfo.php"); 

    mysql_query("INSERT INTO payment_form (date, Tracking, mode, ContactNo, totalsent, datesent, filename) VALUES (NOW(), '$transactionNo', '$rad', '$contactNo', '$totalSent', '$dateSent', '$file_name')") ; 

    header('Location: paymentform_success.php'); 
}else{ 
    print_r($errors); 
} 
} 

?> 

Javascript для включения/выключения

<script type="text/javascript"> 
function enableField(obj){ 
var form=obj.form; 
var txtNames=['contactno','filename'], f; 
var rads=document.getElementsByName(obj.name), r, i=0; 
while(r=rads[i++]){ 
f=form[txtNames[i-1]]; 
if(r.checked){ 
    f.removeAttribute('disabled'); 
    f.focus(); 
} 
else{ 
    f.value=''; 
    f.setAttribute('disabled','disabled') 
} 
} 
} 
</script> 
+3

Замечательно, чтобы увидеть здесь правила безопасности! – Jimbo

ответ

0

Вы должны сначала проверить, какая радио проверяется, а затем решить, что делать. Он не работает, потому что весь скрипт находится под номером if(isset($_FILES['filename'])). Если загрузка файла отключена, то $_FILES не будет установлен, и ничего не будет выполнено.

+0

как вы это делаете? Пожалуйста, покажите мне. – MarkTu

+0

У меня нет времени, чтобы написать его полностью, но я бы сделал что-то вроде этого: http://pastebin.com/9jWxpHj6 – Phate01

+0

@MarkTu, прежде чем делать что-нибудь еще, что вы можете прочитать о sql-инъекциях и почему код уязвим. – Rangad

Смежные вопросы