Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как после загрузки файла сделать автоматическую отправку формы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
freekc
Отправлено: 03 Сентября, 2015 - 18:19:27
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




Здравствуйте.
Помогите, пожалуйста, решить задачку.

У меня есть форма:

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form method="post" action="<?=$_SERVER['PHP_SELF'];?>" enctype="multipart/form-data" name="phmailer" onsubmit="return Checkit(this);">
  3. <input name="attachment[]" type="file" size="30" accept="text/plain,application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
  4. <input type="hidden" name="submit" value="true" />
  5. <input type="submit" value="<?=$submitvalue;?>" />
  6.  


Форма предназначена для отправки файлов из сайта на эмейл. Сама форма рабочая.
Но задача в следующем: мне нужно сделать автоматическую отправку формы после того, как человек выбрал файл (тоесть чтобы юзер не нажимал кнопки submit)
 
 Top
Ts.Saltan
Отправлено: 03 Сентября, 2015 - 18:57:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




форме присвоить id
у элемента input name="attachment[]" добавить атрибут onchange="formID.submit()"
 
 Top
freekc
Отправлено: 04 Сентября, 2015 - 11:33:14
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




Спасибо за ответ, не знаю почему, но форма не отправляется. Прописывал этот атрибут для инпута и выносил в отдельную функцию - все равное не отправляется.

Возможно что-то не так с кодом.
Вот полный код:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?
  3. $websitename="Форма обратной связи с аттачем";
  4. $allowtypes=array("txt", "doc", "docx");
  5. $myemail="name@domen.ru";
  6. $priority="3";
  7. $allowattach="1";
  8. $max_file_size="1024";
  9. $max_file_total="2048";
  10. $submitvalue="Отправить";
  11. $defaultsubject="Резюме";
  12. $use_subject_drop=false;
  13. $subjects=array("Часть 1","Часть 2","Часть 3");
  14. $emails=array("dept_1@domain.com","dept_2@domain.com","dept_3@domain.com");
  15. $thanksmessage="Спасибо! Ваше письмо было отправлено, мы ответим в ближайшее время.";
  16.  
  17. function get_ext($key)
  18. {
  19.         $key=strtolower(substr(strrchr($key, "."), 1));
  20.         // Cause there the same right?
  21.         $key=str_replace("jpeg","jpg",$key);
  22.         return $key;
  23. }
  24. function phattach($file,$name)
  25. {
  26.         global $boundary;      
  27.         $fp=@fopen($file,"r");
  28.         $str=@fread($fp, filesize($file));
  29.         $str=@chunk_split(base64_encode($str));
  30.         $message="--".$boundary."\n";
  31.         $message.="Content-Type: application/octet-stream; name=\"".$name."\"\n";
  32.         $message.="Content-disposition: attachment; filename=\"".$name."\"\n";
  33.         $message.="Content-Transfer-Encoding: base64\n";
  34.         $message.="\n";
  35.         $message.="$str\n";
  36.         $message.="\n";
  37.         return $message;
  38. }
  39. function clean($key)
  40. {
  41.         $key=str_replace("\r", "", $key);
  42.         $key=str_replace("\n", "", $key);
  43.         $find=array(
  44.                 "/bcc\:/i",
  45.                 "/Content\-Type\:/i",
  46.                 "/Mime\-Type\:/i",
  47.                 "/cc\:/i",
  48.                 "/to\:/i"
  49.         );
  50.  $key=preg_replace($find,"",$key);
  51.  return $key;
  52. }
  53. $error="";
  54. $types="";
  55. $sent_mail=false;
  56. $ext_count=count($allowtypes);
  57. $i=0;
  58. foreach($allowtypes AS $extension) {
  59.        
  60.         //Gets rid of the last comma
  61.        
  62.         if($i <= $ext_count-2) {
  63.                 $types .="*.".$extension.", ";
  64.         } else {
  65.                 $types .="*.".$extension;
  66.         }
  67.         $i++;
  68. }
  69. unset($i,$ext_count);
  70.  
  71. if($_POST['submit']==true) {
  72.         extract($_POST, EXTR_SKIP);
  73.        
  74.                
  75.                 if($allowattach > 0) {
  76.                        
  77.                         //Loopish
  78.                        
  79.                         for($i=0; $i <= $allowattach-1; $i++) {
  80.                                
  81.                                 if($_FILES['attachment']['name'][$i]) {
  82.                                        
  83.                                         $ext=get_ext($_FILES['attachment']['name'][$i]);
  84.                                         $size=$_FILES['attachment']['size'][$i];
  85.                                         $max_bytes=$max_file_size*1024;
  86.                                        
  87.                                         //Check if the file type uploaded is a valid file type.
  88.                                        
  89.                                         if(!in_array($ext, $allowtypes)) {
  90.                                                
  91.                                                 $error.= "Недопустимое расширение для вашего файла: ".$_FILES['attachment']['name'][$i].", only ".$types." are allowed.<br />";
  92.                                                
  93.                                                 //Check the size of each file
  94.                                                
  95.                                         } elseif($size > $max_bytes) {
  96.                                                 $error.= "Ваш файл: ".$_FILES['attachment']['name'][$i]." is to big. Max file size is ".$max_file_size."kb.<br />";
  97.                                         }
  98.                                        
  99.                                 } // If Files
  100.                                
  101.                         } // For
  102.  
  103.                         //Tally the size of all the files uploaded, check if it's over the ammount.
  104.                        
  105.                         $total_size=array_sum($_FILES['attachment']['size']);
  106.                        
  107.                         $max_file_total_bytes=$max_file_total*1024;
  108.                        
  109.                         if($total_size > $max_file_total_bytes) {
  110.                                 $error.="Максимальный допустимый размер вашего файла ".$max_file_total."kb<br />";
  111.                         }
  112.                        
  113.                 } // If Allowattach
  114.  
  115.         if($error) {
  116.        
  117.                 $display_message=$error;
  118.  
  119.         } else {
  120.                
  121.                 if($use_subject_drop AND is_array($subjects) AND is_array($emails)) {
  122.                         $subject_count=count($subjects);
  123.                         $email_count=count($emails);
  124.                        
  125.                         if($subject_count==$email_count) {                     
  126.                                 $myemail=$emails[$emailsubject];
  127.                                 $emailsubject=$subjects[$emailsubject];                
  128.                         }              
  129.                 }              
  130.                 $boundary=md5(uniqid(time()));         
  131.                 $yourname=clean($yourname);
  132.                 $yourmessage=clean($yourmessage);
  133.                 $youremail=clean($youremail);
  134.                 $youremail="Резюме";
  135.  
  136.                 $headers="From: ".$yourname." <".$youremail.">\n";
  137.                 $headers.="Reply-To: ".$yourname." <".$youremail.">\n";
  138.                 $headers.="MIME-Version: 1.0\n";
  139.                 $headers.="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
  140.                 $headers.="X-Sender: ".$_SERVER['REMOTE_ADDR']."\n";
  141.                 $headers.="X-Mailer: PHP/".phpversion()."\n";
  142.                 $headers.="X-Priority: ".$priority."\n";
  143.                 $headers.="Return-Path: <".$youremail.">\n";
  144.                 $headers.="This is a multi-part message in MIME format.\n";
  145.  
  146.                 //Message
  147.                        
  148.                 $message = "--".$boundary."\n";
  149.                 $message.="Content-Type: text/plain; charset=\"utf-8\"\n";
  150.                 $message.="Content-Transfer-Encoding: quoted-printable\n";
  151.                 $message.="\n";
  152.                 $message.="$yourmessage";
  153.                 $message.="\n";
  154.  
  155.                 //Lets attach to something! =)
  156.                
  157.                 if($allowattach > 0) {
  158.                        
  159.                         for($i=0; $i <= $allowattach-1; $i++) {
  160.                                
  161.                                 if($_FILES['attachment']['name'][$i]) {
  162.                                        
  163.                                         $message.=phattach($_FILES['attachment']['tmp_name'][$i],$_FILES['attachment']['name'][$i]);
  164.                                        
  165.                                 }
  166.                                
  167.                         } //For
  168.                        
  169.                 } // if
  170.                
  171.                
  172.                 // End the message
  173.                
  174.                 $message.="--".$boundary."--\n";
  175.                
  176.                 // Send the completed message
  177.                
  178.                 if(!mail($myemail,$emailsubject,$message,$headers)) {
  179.                        
  180.                         exit("Произошла ошибка, пожалуйста, сообщите об этом администратору сайта.\n");
  181.                        
  182.                 } else {
  183.                
  184.                         $sent_mail=true;
  185.                        
  186.                 }
  187.  
  188.         } // else
  189.  
  190. } // $_POST
  191. ?>
  192.  
  193.  
  194. <html>
  195. <head>
  196. <meta http-equiv="Content-Language" content="en-us" />
  197. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  198. <title><?=$websitename?></title>
  199.  
  200. <style type="text/css">
  201.         body{
  202.                 background-color:#FFFFFF;
  203.                 font-family: Verdana, Arial, sans-serif;
  204.                 font-size: 12pt;
  205.                 color: #000000;
  206.         }
  207.        
  208.        
  209.         .thanks_message{
  210.                 font-family: Verdana, Arial, sans-serif;
  211.                 font-size: 11pt;
  212.                 color: #000000;
  213.         }
  214.        
  215.         form{
  216.                 width: 360px;
  217.                 padding: 20px;
  218.                 margin: 50px auto;
  219.                 background-color:#e5e5e5;
  220.         }
  221. </style>
  222.  
  223.  
  224. <script>
  225. function runUpload(){
  226.    $('#formRezume').submit();
  227. }
  228. </script>
  229.  
  230. </head>
  231. <body>
  232.  
  233.  
  234.  
  235. <?if($sent_mail!=true) {?>
  236. <form method="post" action="<?=$_SERVER['PHP_SELF'];?>" enctype="multipart/form-data" name="phmailer" id="formRezume" onsubmit="return Checkit(this);">
  237.  
  238.  
  239. <?For($i=1;$i <= $allowattach; $i++) {?>
  240.         <input name="attachment[]" class="files" type="file" size="30" accept="text/plain,application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" onchange="runUpload()" />
  241. <?}?>
  242.  
  243.  
  244.                         <input type="hidden" name="submit" value="true" />
  245.                         <input type="submit" value="<?=$submitvalue;?>" /> &nbsp;
  246.  
  247. </form>
  248. <?} Else {?>
  249.  
  250. <div align="center" class="thanks_message"><?=$thanksmessage;?></div>
  251. <html><head><meta http-equiv='Refresh' content='1; URL=index.php'></head></html>
  252. <?}?>
  253. </body>
  254. </html>
  255.  
  256.  


После нажатия на субмит форма отправляется.
 
 Top
broshurkaplus
Отправлено: 04 Сентября, 2015 - 20:33:44
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


Помог: 2 раз(а)




у вас
$('#formRezume').submit();
вам писали
нужно навесить обработчик на изменение инпута, те делать сабмит при изменении - выборе каптинки
 
 Top
freekc
Отправлено: 11 Сентября, 2015 - 11:39:36
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




Тему можно закрыть. Всем спасибо.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB