tnd1000 Posted April 27, 2012 Share Posted April 27, 2012 (edited) Hey there. I'm trying to build a contact form from scratch (using the W3Schools tutorials pretty heavily), but I'm having some issues. First off, I'd like to write in a bit of code that grabs the username of the person submitting the form, and sends it along with the other submitted information. Also, if the person isn't signed in, they won't be able to use the form. I'm sure this will involve some PHP, which I will be more than happy to do, if someone could perhaps point me in the right direction? <div id="events"><form name="event-submit" action="MAILTO:someone@example.com" method="post" enctype="text/plain">Event Name:<br /> <input type="text" name="eventname" /><br />Start Date:<br /> <input type="text" name="startdate" /><br />End Date:<br /> <input type="text" name="enddate" /><br />Location:<br /> <input type="text" name="location" /><br />Description:<br /> <input type="text" name="description" size="50" /><br /><input type="submit" value="Submit" /></form></div> (And yes, I do have my actual email address for the MAILTO property, I just omitted it for this post.) My main problem right now is, the submit button isn't working. Buttons and I do not get along, it seems...Any suggestions as to what I'm doing wrong would be greatly appreciated. EDIT Okay, I apparently left off a rather important caret. The button is working just fine now, but is there any way to make the email not go through Outlook, and go directly to the email address? Edited April 27, 2012 by tnd1000 Link to comment Share on other sites More sharing options...
thescientist Posted April 27, 2012 Share Posted April 27, 2012 I'm not sure where in the tutorials you got that the action should be a mailto. The point of forms is that they get processed server side. mailto to is an HTML implementation, but is not well supported. So first, try following some of the tutorials to make sure you can make a form and have it submit and output the results for you to see.http://www.w3schools.com/php/php_forms.asphttp://www.w3schools.com/php/php_get.asphttp://www.w3schools.com/php/php_post.asp Then you can try integrating that step into sending an emailhttp://www.w3schools.com/php/php_mail.asphttp://www.w3schools.com/php/php_secure_mail.asp Once you've got that, you can then go to the next step and try adding some sort of authentication, in this case using a logged in user. For that you will probably need to learn about $_SESSION and some SQL, as the most common conventions involve a users table for handling logins. But that should come after you get and understand the basics. 1 Link to comment Share on other sites More sharing options...
tnd1000 Posted April 27, 2012 Author Share Posted April 27, 2012 Ah, thank you very much! I was afraid that I might be going about it in a haphazard way. Link to comment Share on other sites More sharing options...
tnd1000 Posted April 27, 2012 Author Share Posted April 27, 2012 <?phpfunction spamcheck($field) { //filter_var() sanitizes the e-mail //address using FILTER_SANITIZE_EMAIL $field=filter_var($field, FILTER_SANITIZE_EMAIL); //filter_var() validates the e-mail //address using FILTER_VALIDATE_EMAIL if(filter_var($field, FILTER_VALIDATE_EMAIL)) { return TRUE; } else { return FALSE; } }if (isset($_REQUEST['email'])) {//if "email" is filled out, proceed //check if the email address is invalid $mailcheck = spamcheck($_REQUEST['email']); if ($mailcheck==FALSE) { echo "Invalid input"; } else {//send email $email = $_REQUEST['email'] ; $eventname = $_REQUEST['eventname'] ; $startdate = $_REQUEST['startdate'] ; $enddate = $_REQUEST['enddate'] ; $location = $_REQUEST['location'] ; $details = $_REQUEST['details'] ; mail("someone@example.com", "Event Name: $eventname", $details, "From: $email" ); echo "Thank you for submitting your event"; } }else {//if "email" is not filled out, display the form echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Event Name: <input name='eventname' type='text' /><br /> Start Date: <input name='startdate' type='text' /><br /> End Date: <input name='enddate' type='text' /><br /> Location: <input name='location' type='text' /><br /> Details:<br /> <textarea name='details' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>";}?> Is there something I'm still doing wrong here? My button does nothing at all, and for some reason all of the symbols after </form> are rejected from the code and show up on the site as characters. Link to comment Share on other sites More sharing options...
Don E Posted April 27, 2012 Share Posted April 27, 2012 (edited) Give the submit button a name: <input type='submit' name="submit" /> Then here, for the if (isset($_REQUEST['email'])) , you can do this: if (isset($_POST['submit'])) If you want to make it 'easier', instead of the way you have the form being echoed, you can do this: else { //if "email" is not filled out, display the form?> <form method="post" action="mailform.php"> Email: <input name="email" type="text" /><br /> Event Name: <input name="eventname" type="text" /><br /> Start Date: <input name="startdate" type="text" /><br /> End Date: <input name="enddate" type="text" /><br /> Location: <input name="location" type="text" /><br /> Details:<br /> <textarea name="details" rows="15" cols="40"> </textarea><br /> <input type="submit" name="submit" /> </form><?php}?> Edited April 27, 2012 by Don E Link to comment Share on other sites More sharing options...
tnd1000 Posted April 27, 2012 Author Share Posted April 27, 2012 It's still not working, for some reason. Link to comment Share on other sites More sharing options...
Don E Posted April 27, 2012 Share Posted April 27, 2012 Problem same as before when hitting the submit button nothing happens or ? Link to comment Share on other sites More sharing options...
thescientist Posted April 27, 2012 Share Posted April 27, 2012 (edited) what doesn't work? what's your updated code? Please be specific when looking for feedback. What is it doing? What isn't it doing? What do you want it to be doing? Are you debugging to test parts of your code to make sure values are what you expect them to be? Have you done the bare minimum and been able to echo all your form values? Have you verified that part of it yet? You should be testing incrementally before jumping ahead, as your experience requires that you understand everything that your code is doing, line by line, before you use it. Edited April 27, 2012 by thescientist Link to comment Share on other sites More sharing options...
tnd1000 Posted April 27, 2012 Author Share Posted April 27, 2012 The submit button still does nothing when I click on it. I may need to do some work on the site itself to incorporate the form into the software. Apologies. I have not debugged any of it yet, as I am only able to work with the program Notepad. I'm unable to download any programs with my current internet connection (dial-up), so I'll see if I can find an online debugger. I'll work with it until I figure something out. Thank you both for your help. Link to comment Share on other sites More sharing options...
Don E Posted April 27, 2012 Share Posted April 27, 2012 It may be because of here: $email = $_REQUEST['email'] ; $eventname = $_REQUEST['eventname'] ; $startdate = $_REQUEST['startdate'] ; $enddate = $_REQUEST['enddate'] ; $location = $_REQUEST['location'] ; $details = $_REQUEST['details'] ; mail("someone@example.com", "Event Name: $eventname", $details, "From: $email" ); echo "Thank you for submitting your event"; Try changing $_REQUEST to $_POST for the above since the form above is using method="post". $_REQUEST usually contains the contents of $_GET, $_POST and $_COOKIE in one global array($_REQUEST). Usually $_POST helps narrowing it down.Make sure 'someone@example.com' is an actual working email address. Are you using WAMP or XAMP or are you doing this from the Social program? I suggest you get yourself a nice editing program like Notepad++, or netbeans, etc(both free, when you're on a faster connection). Dreamweaver is nice if you have that kind of money but I highly suggest only working in the 'code view' side(there's a trial version). When debugging, what scientist meant by testing part of your code, you test a single part of your code making sure everything works for that specific part, then move on to the next part, etc.. This is referred to 'unit testing'. 1 Link to comment Share on other sites More sharing options...
thescientist Posted April 27, 2012 Share Posted April 27, 2012 (edited) debugging can be as simple as having this at the top of mailform.php to start and make sure at least this works before adding the rest. <?phpecho 'start of mailform.php<br>';if(isset($_POST['submit'])){ echo 'form submitted. view POST<br>'; var_dump($_POST);};?> there's nothing special you have to do, or software to get, except start from the ground up and make sure each little bit works. make sure you get all the $_POST variables to show first. nothing will work as expected without them. Edited April 27, 2012 by thescientist 1 Link to comment Share on other sites More sharing options...
TheGallery Posted April 28, 2012 Share Posted April 28, 2012 (edited) did you change action="MAILTO:someone@example.com to action="proccessscript.php" ? (where proccessscript.php is the file that contains the script you posted above. You could also submit the page to itself but make sure you change it's extension to .php ) Edited April 28, 2012 by TheGallery 1 Link to comment Share on other sites More sharing options...
tnd1000 Posted April 30, 2012 Author Share Posted April 30, 2012 @Don: Okay, thanks. I'll definitely try changing those to $_POST. And yes, I'm using a working email address that I created through my hosting company's control panel. @scientist: Ahh, I see. Yeah, that's generally a good way to go about it. Thank you for clarifying. @Gallery: Yep, I took out the MAILTO function, but I did want to clarify something: I'll have to first create the .php file that I call to in the 'action' spot, right? The only reason why I ask instead of just doing it, is because the software I'm using is iffy, and their customer support team won't help me if I mess up the software. I'll definitely do some testing to see where all I went wrong with this thing. Link to comment Share on other sites More sharing options...
thescientist Posted April 30, 2012 Share Posted April 30, 2012 what software? I don't see anything in there other just normal PHP. You can create either one first, just make sure the names of the inputs in the HTML are the same members you look for in $_POST in the script 1 Link to comment Share on other sites More sharing options...
tnd1000 Posted April 30, 2012 Author Share Posted April 30, 2012 (edited) Ahh, thank you very much. I think it's actually starting to function correctly now. And I'm using SocialEngine software. The way it's set up, there are a lot of files in my public_html directory. Just wanted to make sure I was supposed to actually create the file before I went around adding things to their setup. EDIT Please excuse me for shouting, but...IT WORKED!!! Many thanks to all three of you for basically walking me through this (I'm not used to things working properly, especially when I'm involved). Edited April 30, 2012 by tnd1000 3 Link to comment Share on other sites More sharing options...
thescientist Posted May 1, 2012 Share Posted May 1, 2012 rock on. 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now