FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » CLP - ON TOPIC! - Need PHP form email help, Please!
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: CLP - ON TOPIC! - Need PHP form email help, Please! [message #173192 is a reply to message #173158] Sat, 26 March 2011 22:32 Go to previous messageGo to previous message
Tim is currently offline  Tim
Messages: 13
Registered: March 2011
Karma:
Junior Member
In article <4d8c058d$0$29403$bed64819(at)gradwell(dot)net>, Denis McMahon
<denis(dot)m(dot)f(dot)mcmahon(at)gmail(dot)com> wrote:

> On Thu, 24 Mar 2011 15:26:21 -0500, Tim wrote:
>
>> In article <4d8b8eb6$0$995$bed64819(at)gradwell(dot)net>, Denis McMahon
>> <denis(dot)m(dot)f(dot)mcmahon(at)gmail(dot)com> wrote:
>>
>>> On Thu, 24 Mar 2011 13:16:33 -0500, Tim wrote:
>>>
>>>> In article <4d8a5c0e$0$23756$14726298(at)news(dot)sunsite(dot)dk>, Jonathan
>>>> Stein <jstein(at)image(dot)dk> wrote:
>>>>
>>>> > On 23-03-2011 19:05, Tim wrote:
>>>> >
>>>> > > I also find it strange, and very frustrating, that I seem to have
>>>> > > to become a php expert just to make this one form page behave the
>>>> > > way I want.
>>>
>>>> > http://www.phpeveryday.com/articles/PHP-Email-Using-Embedded-Images-
> in-
>>> HTML-Em
>>>> > ail-P113.html
>>>
>>>> I looked at that briefly. I hadn't searched for that exact string so
>>>> I suppose that is why I hadn't seen it before.
>>>>
>>>> It is on the right track, though it would require a lot of
>>>> modification to get it to work with my existing code since it uses an
>>>> image located on the server and whose name is known.
>>>
>>> If you don't know what the file name of the image file is, how the heck
>>> do you expect to be able to do anything at all with it?
>>>
>>> Perhaps your questions should start with:
>>>
>>> "How do I find out where the uploaded file is, and what it was called?"
>>>
>>> http://uk2.php.net/manual/en/reserved.variables.files.php
>>>
>>> After you have absorbed that information, perhaps you will then be
>>> ready to ask "How do I use PHP to email this uploaded image to someone
>>> else?"
>
>> Thanks for the concern, but I already have the form and handler code
>> that gets the file's name. I was just pointing out that the example at
>> that link was using a pre-existing image file, rather than an uploaded
>> one, and hard-coding it into the script.
>
> Yes, and? You simply have to write code that uses your filename wherever
> that code uses the hardcoded filename. It's not difficult.
>
>> This is all about getting the data, including the image, to me in the
>> desired format so I can print it out without needing to make
>> modifications to it such as placing the attached image where I want it.
>
> ok, maybe the second question should have been:
>
> "How do I use PHP to email this uploaded image to someone?"
>
> where "someone" might include yourself.
>
> Here's what happens:
>
> File is uploaded in a form. It gets put in a temporary location. The
> $_FILES superglobal contains:
>
> a) original filename from uploading system
> b) mime type
> c) temporary name
> d) status
> e) size
>
> (possibly not in that order)
>
> mime type might not be valid, there's a suggestion it's supplied by the
> uploader. original filename might also not be valid.
>
> First of all you should use move_uploaded_file to put the file in your
> "incoming uploads" directory. At this point, you can also rename it to
> whatever you want to call it. You might or might not choose to use some
> or all of:
>
> uploading system ip
> date and time
> original filename
>
> to create a unique name, after all you can't have two files of the same
> name in your temp dir. Or you could just number incoming files
> sequentially starting at 1. What I'd probably do is make a note of the
> original name, uploaders ip, time and date, create an md5 hash from it
> and use that as the unique filename, and record the original information
> in a log file.
>
> However, as you want to send an email, you could stick that information
> in the message body, together with the unique filename that you gave it
> in your incoming uploads directory
>
> So once you have the file in your incoming uploads directory, with
> whatever filename you choose to give it derived however you decided to
> derive it, you can now, by using a slightly modified version of the email
> example that you have already been provided with, email it to yourself.
>
> We're not expecting you to become an expert, but please, to make the php
> code to do what you want it to, you have to meet it half way and be
> prepared to string a few functions and control statements together.
>
> If you're not capable of editing an example of code that uses a hardcoded
> filename to use a variable one instead, then maybe you need to spend some
> more time getting to grips with the basics of programming concepts and
> editing files, and then the variable naming syntaxes etc of php, before
> you start working on anything as ambitious as form handling, uploaded
> files and sending emails.
>
> Rgds
>
> Denis McMahon
OK. I have some code from the existing form handler page which I copied
and removed everything about sending the email. I added some code for
various things, then tried to test it. Instead of executing the code I
got a redirect to the handler page which was blank.

I am not going to put all the code here to save space, just what I
added or changed since that is what killed it. Oh, yes, I am doing this
on my localhost, and the original handler worked OK.

First there is the validation stuff which checks to see if required
fields are filled in and the image is the correct type. Then the form
entries are placed into variables. Am I right in thinking the $_SERVER
stuff is about uploading the image? This is in the original, but I
included it to ask the question and to show where the variables used
later came from. The original was created with Forms to Go, hence the
$FTG in the variable names.

if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$clientIP = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$clientIP = $_SERVER['REMOTE_ADDR'];
}

$FTGheadshot = $_FILES['headshot']['name'];
$FTGfirstname = DoStripSlashes( $_POST['firstname'] );
$FTGlastname = DoStripSlashes( $_POST['lastname'] );
$FTGaddress = DoStripSlashes( $_POST['address'] );
$FTGcity = DoStripSlashes( $_POST['city'] );
$FTGstate = DoStripSlashes( $_POST['state'] );
$FTGzip = DoStripSlashes( $_POST['zip'] );
$FTGhomenum = DoStripSlashes( $_POST['homenum'] );
$FTGmaincontact = DoStripSlashes( $_POST['maincontact'] );
$FTGcellnum = DoStripSlashes( $_POST['cellnum'] );
$FTGworknum = DoStripSlashes( $_POST['worknum'] );
$FTGfaxnum = DoStripSlashes( $_POST['faxnum'] );
$FTGemail = DoStripSlashes( $_POST['email'] );

After that I added code that is supposed to save the image to the
directory "profiles/".

# Save image to profiles directory
$path = "profiles/";
$path = $path . basename($FTGheadshot);
if(move_uploaded_file($_FILES['headshot']['tmp_name'], $path)) {
echo "The file ". basename( $_FILES['headshot']['name']).
" has been uploaded";//moves file and notifies if successful
} else{
echo "There was an error uploading the file, please try
again!";//or not
}

This before the validation failure redirect. Should it have been after
that? Should I have the echo if there is no place to display it?

Then comes the validation success line followed by"

$new_profile = $FTGfirstname"_"$FTGlastname".html";
$fh = fopen(profiles/$new_profile, 'w') or die("can't open file");

This should create a new profile html page named
firstname_lastname.html. Did I do that correctly? That is followed with
some fwrite commands to write the html to the file:

fwrite($fh, "<html>\n
<head>\n
<title>"$new_profile"</title>\n
</head>\n
<body>\n");
fwrite($fh, "<table width=\"800\" border=\"1\" cellspacing=\"2\"
cellpadding=\"10\"><tr>\n");
fwrite($fh, "<td>firstname : $FTGfirstname<br />\n
lastname : $FTGlastname<br />\n
address : $FTGaddress<br />\n
city : $FTGcity<br />\n
state : $FTGstate<br />\n
zip : $FTGzip<br />\n
homenum : $FTGhomenum<br />\n
maincontact : $FTGmaincontact<br />\n
cellnum : $FTGcellnum<br />\n
worknum : $FTGworknum<br />\n
faxnum : $FTGfaxnum<br />\n
email : $FTGemail<br /></td>\n");

There is also this line: (inside an fwrite function)

<img
src=\"imgresize.php?w=400&amp;h=500&amp;constrain=1&amp;img=$path\ " />

which is supposed to resize the image to fit the cell using code on an
external page. I know the $path is wrong because it would contain the
name of the image by this point. Should it just be the $FTGheadshot or
$_FILES["headshot"]? Will this work if I don't have sessions enabled? I
just thought of that though nothing was said about it on the site where
I found the code.

After that is the fclose($new_profile). Actually I just noticed I had
put fclose($fh). Then comes:

header("Location: success.php");

followed by the closing } and ?>

Is this enough for someone to see what I did wrong, or do I need to
post the entire page? Or is it just so wrong I need to start over?
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: ip address of client
Next Topic: Islandnet.com dropping support for PHP4
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Sun Oct 06 20:19:20 GMT 2024

Total time taken to generate the page: 0.11315 seconds