garnett3 Posted May 8, 2007 Share Posted May 8, 2007 I have a PHP script I am running for a client. He uses it to allow his clients to login and upload. I need to set it up so he can receive an email every time someone uploads something to the FTP server (via the website). I dont know how to do it! Quote Link to comment https://forums.phpfreaks.com/topic/50545-php-upload-email-notification/ Share on other sites More sharing options...
the_oliver Posted May 8, 2007 Share Posted May 8, 2007 Do you have some way of telling wheter the upload was a success or not? If so you can simply use the mail() function. Quote Link to comment https://forums.phpfreaks.com/topic/50545-php-upload-email-notification/#findComment-248394 Share on other sites More sharing options...
per1os Posted May 8, 2007 Share Posted May 8, 2007 Posting the upload portion code would be helpful? Quote Link to comment https://forums.phpfreaks.com/topic/50545-php-upload-email-notification/#findComment-248399 Share on other sites More sharing options...
garnett3 Posted May 10, 2007 Author Share Posted May 10, 2007 heres whats in the upload page include ($_SERVER['DOCUMENT_ROOT']."/classes/upload/upload_class.php"); //classes is the map where the class file is stored (one above the root) //error_reporting(E_ALL); $max_size = 100000000024*100; // the max. size for uploading class muli_files extends file_upload { var $number_of_files = 0; var $names_array; var $tmp_names_array; var $error_array; var $wrong_extensions = 0; var $bad_filenames = 0; function extra_text($msg_num) { switch ($this->language) { case "de": // add you translations here break; default: $extra_msg[1] = "Error for: <b>".$this->the_file."</b>"; $extra_msg[2] = "You have tried to upload ".$this->wrong_extensions." files with a bad extension, the following extensions are allowed: <b>".$this->ext_string."</b>"; $extra_msg[3] = "Select at least on file."; $extra_msg[4] = "Select the file(s) for upload."; $extra_msg[5] = "You have tried to upload <b>".$this->bad_filenames." files</b> with invalid characters inside the filename."; } return $extra_msg[$msg_num]; } // this method checkes the number of files for upload // this example works with one or more files function count_files() { foreach ($this->names_array as $test) { if ($test != "") { $this->number_of_files++; } } if ($this->number_of_files > 0) { return true; } else { return false; } } function upload_multi_files () { $this->message = ""; if ($this->count_files()) { foreach ($this->names_array as $key => $value) { if ($value != "") { $this->the_file = $value; $new_name = $this->set_file_name(); if ($this->check_file_name($new_name)) { if ($this->validateExtension()) { $this->file_copy = $new_name; $this->the_temp_file = $this->tmp_names_array[$key]; if (is_uploaded_file($this->the_temp_file)) { if ($this->move_upload($this->the_temp_file, $this->file_copy)) { $this->message[] = $this->error_text($this->error_array[$key]); if ($this->rename_file) $this->message[] = $this->error_text(16); sleep(1); // wait a seconds to get an new timestamp (if rename is set) } } else { $this->message[] = $this->extra_text(1); $this->message[] = $this->error_text($this->error_array[$key]); } } else { $this->wrong_extensions++; } } else { $this->bad_filenames++; } } } if ($this->bad_filenames > 0) $this->message[] = $this->extra_text(5); if ($this->wrong_extensions > 0) { $this->show_extensions(); $this->message[] = $this->extra_text(2); } } else { $this->message[] = $this->extra_text(3); } } } $multi_upload = new muli_files; $multi_upload->upload_dir = $_SERVER['DOCUMENT_ROOT']."/upload/"; // "files" is the folder for the uploaded files (you have to create this folder) $multi_upload->extensions = array(".jpg", ".png", ".html", ".htm", ".gif", ".zip", ".tar.gz", ".shtml", ".php", ".txt", ".doc"); // specify the allowed extensions here $multi_upload->message[] = $multi_upload->extra_text(4); // a different standard message for multiple files //$multi_upload->rename_file = true; // set to "true" if you want to rename all files with a timestamp value $multi_upload->do_filename_check = "y"; // check filename ... if(isset($_POST['Submit'])) { $multi_upload->tmp_names_array = $_FILES['upload']['tmp_name']; $multi_upload->names_array = $_FILES['upload']['name']; $multi_upload->error_array = $_FILES['upload']['error']; $multi_upload->replace = (isset($_POST['replace'])) ? $_POST['replace'] : "n"; // because only a checked checkboxes is true $multi_upload->upload_multi_files(); } ?> <form name="form1" enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_size; ?>"> <label for="upload[]">File 1:</label> <input type="file" name="upload[]" size="30"><br> <label for="upload[]">File 2:</label> <input type="file" name="upload[]" size="30"><br> <label for="upload[]">File 3:</label> <input type="file" name="upload[]" size="30"><br> <!-- Add here more file fields if you need. --> Replace files? <input type="checkbox" name="replace" value="y"> <input type="submit" name="Submit" value="Submit"> </form> <p><?php echo $multi_upload->show_error_string(); ?></p> Quote Link to comment https://forums.phpfreaks.com/topic/50545-php-upload-email-notification/#findComment-249969 Share on other sites More sharing options...
garnett3 Posted May 10, 2007 Author Share Posted May 10, 2007 Here's the class file.... class file_upload { var $the_file; var $the_temp_file; var $upload_dir; var $replace; var $do_filename_check; var $max_length_filename = 100; var $extensions; var $ext_string; var $language; var $http_error; var $rename_file; // if this var is true the file copy get a new name var $file_copy; // the new name var $message = array(); var $create_directory = true; function file_upload() { $this->language = "en"; // choice of en, nl, es $this->rename_file = false; $this->ext_string = ""; } function show_error_string() { $msg_string = ""; foreach ($this->message as $value) { $msg_string .= $value."<br />\n"; } return $msg_string; } function set_file_name($new_name = "") { // this "conversion" is used for unique/new filenames if ($this->rename_file) { if ($this->the_file == "") return; $name = ($new_name == "") ? strtotime("now") : $new_name; sleep(3); $name = $name.$this->get_extension($this->the_file); } else { $name = str_replace(" ", "_", $this->the_file); // space will result in problems on linux systems } return $name; } function upload($to_name = "") { $new_name = $this->set_file_name($to_name); if ($this->check_file_name($new_name)) { if ($this->validateExtension()) { if (is_uploaded_file($this->the_temp_file)) { $this->file_copy = $new_name; if ($this->move_upload($this->the_temp_file, $this->file_copy)) { $this->message[] = $this->error_text($this->http_error); if ($this->rename_file) $this->message[] = $this->error_text(16); return true; } } else { $this->message[] = $this->error_text($this->http_error); return false; } } else { $this->show_extensions(); $this->message[] = $this->error_text(11); return false; } } else { return false; } } function check_file_name($the_name) { if ($the_name != "") { if (strlen($the_name) > $this->max_length_filename) { $this->message[] = $this->error_text(13); return false; } else { if ($this->do_filename_check == "y") { if (preg_match("/^[a-z0-9_]*\.(.){1,5}$/i", $the_name)) { return true; } else { $this->message[] = $this->error_text(12); return false; } } else { return true; } } } else { $this->message[] = $this->error_text(10); return false; } } function get_extension($from_file) { $ext = strtolower(strrchr($from_file,".")); return $ext; } function validateExtension() { $extension = $this->get_extension($this->the_file); $ext_array = $this->extensions; if (in_array($extension, $ext_array)) { // check mime type hier too against allowed/restricted mime types (boolean check mimetype) return true; } else { return false; } } // this method is only used for detailed error reporting function show_extensions() { $this->ext_string = implode(" ", $this->extensions); } function move_upload($tmp_file, $new_file) { if ($this->existing_file($new_file)) { $newfile = $this->upload_dir.$new_file; if ($this->check_dir($this->upload_dir)) { if (move_uploaded_file($tmp_file, $newfile)) { umask(0); chmod($newfile , 0644); return true; } else { return false; } } else { $this->message[] = $this->error_text(14); return false; } } else { $this->message[] = $this->error_text(15); return false; } } function check_dir($directory) { if (!is_dir($directory)) { if ($this->create_directory) { umask(0); mkdir($directory, 0777); return true; } else { return false; } } else { return true; } } function existing_file($file_name) { if ($this->replace == "y") { return true; } else { if (file_exists($this->upload_dir.$file_name)) { return false; } else { return true; } } } function get_uploaded_file_info($name) { $str = "File name: ".basename($name)."\n"; $str .= "File size: ".filesize($name)." bytes\n"; if (function_exists("mime_content_type")) { $str .= "Mime type: ".mime_content_type($name)."\n"; } if ($img_dim = getimagesize($name)) { $str .= "Image dimensions: x = ".$img_dim[0]."px, y = ".$img_dim[1]."px\n"; } return $str; } // this method was first located inside the foto_upload extension function del_temp_file($file) { $delete = @unlink($file); clearstatcache(); if (@file_exists($file)) { $filesys = eregi_replace("/","\\",$file); $delete = @system("del $filesys"); clearstatcache(); if (@file_exists($file)) { $delete = @chmod ($file, 0644); $delete = @unlink($file); $delete = @system("del $filesys"); } } } // this function creates a file field and if $show_alternate is true it will show a text field if the given file already exists // there is also a submit button to remove the text field value function create_file_field($element, $label = "", $length = 25, $show_replace = true, $replace_label = "Replace old file?", $file_path = "", $file_name = "", $show_alternate = false, $alt_length = 30, $alt_btn_label = "Delete image") { $field = ($label != "") ? "<label>".$label."</label>\n" : ""; $file_field = "<input type=\"file\" name=\"".$element."\" size=\"".$length."\" />\n"; $file_field .= ($show_replace) ? "<span>".$replace_label."</span><input type=\"checkbox\" name=\"replace\" value=\"y\" />" : ""; if ($file_name != "" && $show_alternate) { $field .= "<input type=\"text\" name=\"".$element."\" size=\"".$alt_length."\" value=\"".$file_name."\" readonly=\"readonly\""; $field .= (!@file_exists($file_path.$file_name)) ? " title=\"".sprintf($this->error_text(17), $file_name)."\" />\n" : " />\n"; $field .= "<input type=\"checkbox\" name=\"del_img\" value=\"y\" /><span>".$alt_btn_label."</span>\n"; } else { $field .= $file_field; } return $field; } // some error (HTTP)reporting, change the messages or remove options if you like. function error_text($err_num) { switch ($this->language) { case "nl": $error[0] = "Foto succesvol kopieert."; $error[1] = "Het bestand is te groot, controlleer de max. toegelaten bestandsgrootte."; $error[2] = "Het bestand is te groot, controlleer de max. toegelaten bestandsgrootte."; $error[3] = "Fout bij het uploaden, probeer het nog een keer."; $error[4] = "Fout bij het uploaden, probeer het nog een keer."; $error[10] = "Selecteer een bestand."; $error[11] = "Het zijn alleen bestanden van dit type toegestaan: <b>".$this->ext_string."</b>"; $error[12] = "Sorry, de bestandsnaam bevat tekens die niet zijn toegestaan. Gebruik alleen nummer, letters en het underscore teken. <br>Een geldige naam eindigt met een punt en de extensie."; $error[13] = "De bestandsnaam is te lang, het maximum is: ".$this->max_length_filename." teken."; $error[14] = "Sorry, het opgegeven directory bestaat niet!"; $error[15] = "Uploading <b>".$this->the_file."...Fout!</b> Sorry, er is al een bestand met deze naam aanwezig."; $error[16] = "Het gekopieerde bestand is hernoemd naar <b>".$this->file_copy."</b>."; $error[17] = "Het bestand %s bestaat niet."; break; case "de": $error[0] = "Die Datei: <b>".$this->the_file."</b> wurde hochgeladen!"; $error[1] = "Die hochzuladende Datei ist größer als der Wert in der Server-Konfiguration!"; $error[2] = "Die hochzuladende Datei ist größer als der Wert in der Klassen-Konfiguration!"; $error[3] = "Die hochzuladende Datei wurde nur teilweise übertragen"; $error[4] = "Es wurde keine Datei hochgeladen"; $error[10] = "Wählen Sie eine Datei aus!."; $error[11] = "Es sind nur Dateien mit folgenden Endungen erlaubt: <b>".$this->ext_string."</b>"; $error[12] = "Der Dateiname enthält ungültige Zeichen. Benutzen Sie nur alphanumerische Zeichen für den Dateinamen mit Unterstrich. <br>Ein gültiger Dateiname endet mit einem Punkt, gefolgt von der Endung."; $error[13] = "Der Dateiname überschreitet die maximale Anzahl von ".$this->max_length_filename." Zeichen."; $error[14] = "Das Upload-Verzeichnis existiert nicht!"; $error[15] = "Upload <b>".$this->the_file."...Fehler!</b> Eine Datei mit gleichem Dateinamen existiert bereits."; $error[16] = "Die hochgeladene Datei ist umbenannt in <b>".$this->file_copy."</b>."; $error[17] = "Die Datei %s existiert nicht."; break; // // place here the translations (if you need) from the directory "add_translations" // default: // start http errors $error[0] = "File: <b>".$this->the_file."</b> successfully uploaded!"; $error[1] = "The uploaded file exceeds the max. upload filesize directive in the server configuration."; $error[2] = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form."; $error[3] = "The uploaded file was only partially uploaded"; $error[4] = "No file was uploaded"; // end http errors $error[10] = "Please select a file for upload."; $error[11] = "Only files with the following extensions are allowed: <b>".$this->ext_string."</b>"; $error[12] = "Sorry, the filename contains invalid characters. Use only alphanumerical chars and separate parts of the name (if needed) with an underscore. <br>A valid filename ends with one dot followed by the extension."; $error[13] = "The filename exceeds the maximum length of ".$this->max_length_filename." characters."; $error[14] = "Sorry, the upload directory doesn't exist!"; $error[15] = "Uploading <b>".$this->the_file."...Error!</b> Sorry, a file with this name already exitst."; $error[16] = "The uploaded file is renamed to <b>".$this->file_copy."</b>."; $error[17] = "The file %s does not exist."; } return $error[$err_num]; } } ?> Quote Link to comment https://forums.phpfreaks.com/topic/50545-php-upload-email-notification/#findComment-249975 Share on other sites More sharing options...
the_oliver Posted May 10, 2007 Share Posted May 10, 2007 return $error[$err_num]; add something to the end like: if ( $err_num == 0 ) { mail mail("whoever@emailaddres.com", "Sussesful file upload", "The File: ".$file_var." was uploaded", "From: <$from_address>"); } Quote Link to comment https://forums.phpfreaks.com/topic/50545-php-upload-email-notification/#findComment-250210 Share on other sites More sharing options...
garnett3 Posted May 11, 2007 Author Share Posted May 11, 2007 it shot me back an error for that line Quote Link to comment https://forums.phpfreaks.com/topic/50545-php-upload-email-notification/#findComment-250232 Share on other sites More sharing options...
the_oliver Posted May 11, 2007 Share Posted May 11, 2007 if ( $err_num == 0 ) { mail("whoever@emailaddres.com", "Sussesful file upload", "The File: ".$file_var." was uploaded", "From: <$from_address>"); } sorry, one to many mail's! Not all hosting will alow the function just like that. You may have to specify mail servers etc. Tryit and post the result. Quote Link to comment https://forums.phpfreaks.com/topic/50545-php-upload-email-notification/#findComment-250381 Share on other sites More sharing options...
garnett3 Posted May 11, 2007 Author Share Posted May 11, 2007 it uploaded the file successfully w/ no error message...but i havent received the notification...all i changed in the code you sent was the "whoever@emailaddress.com" to my email Quote Link to comment https://forums.phpfreaks.com/topic/50545-php-upload-email-notification/#findComment-250913 Share on other sites More sharing options...
the_oliver Posted May 12, 2007 Share Posted May 12, 2007 That sounds like your web host may not support mail() from the local host. You should check this with them. It they dont they will probably be able to give you the details of an SMTP you can use. If you cant do it from the local host there are loads of posts in the forum about how to do it. Quote Link to comment https://forums.phpfreaks.com/topic/50545-php-upload-email-notification/#findComment-251451 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.