I am Trying to Submit a form in Codeigniter in form action my url is "Registration/register" when I submit it, it is adding action with existing url. My english is too bad please see attach image for detail.
Example: My Website Url is example.com/d2t/index.php/Registration
I am adding in form action like action = "Registration/register".
then it adds my form url with my website url: example.com/d2t/index.php/Registration/Registration/register
Use site_url() method
action="<?php echo site_url("Registration/register") ?>"
or you can use the form helper :
echo form_open('Registration/register');
http://www.codeigniter.com/userguide3/helpers/form_helper.html?highlight=form%20helper
Related
Hello I am very new to WordPress on my requirement I have created a couple of php files in wordpress theme. Where detailsform.php consists
<form method="post" name="details" action="customerdetails.php">
where after clicking submit button the form has to redirect to customerdetails.php in php it is working fine but in wordpress it is giving 404 error(page not found) I kept all new php files in the existing theme folder.
Please suggest me it is killing my time.
As wordpress has its very own specific way to handle ajax calls, wordpress has it too for post http request by form submitting. In the codex on wordpress there is more details about that.
In a brief explanation, using your functions.php file on your wordpress theme:
The first thing you need to do is set in your action attribute from your form tag, point the following url:
<form action="http://www.example.com/wp-admin/admin-post.php" method="post">
<input type="hidden" name="action" value="my_handler_function">
</form>
Once pointed, you need to add a hidden input with the name attribute action and a value attribute specifying the name of your action. Then, you need to build your handler function on your functions.php file. This is where your going to write the code you need for treat the data you will received by the global $_POST or $_REQUEST variable.
function my_handler_function() {
var_dump($_REQUEST);
die();
//request handlers should die() when they complete their task
}
Next step is to bound this function to your form by using the action hook admin_post_nopriv_ or admin_post_. The difference between these, is where your form is placed. If your form is for a custom functionality for the admin of wordpress then is private and you use admin_post hook action. If this form is part of your public content then use the admin_post_nopriv_ like in the following example:
add_action( 'admin_post_nopriv_my_handler_function', 'my_handler_function' );
As it is show in the code example above, you need to call the add_action function. In the first parameter, It is needed to pass the action hook provide by wordpress combined with the action value specify in the hidden input named action in the form, like admin_post_nopriv_$action_value. In the second parameter, you need to placed the function name you build on you functions.php file. Both are mandatory.
For matters of conventions, generally, the name of the function handler is set it as same as the value of the action input to avoid misunderstandings and gain more readability.
Onced everything is put it all together, all you have to do is test your code.
Happy coding!!
PD: If you want to clarify about this procedure of wordpress, please take a look in the wp-admin/admin-post.php file, but don't even dare to modify it.
// Put your file customerdetails.php in current theme and use following path in action:-
<form method="post" name="details" action="<?php echo get_template_directory_uri() ?>/customerdetails.php">
404 error means the action is wrong for form.
<form method="post" name="details" action="customerdetails.php">
^ ^
Correct the action to exact path of customerdetails.php
Issue must be with path (form redirection URL on submission), try with full url.
Can you share the URL at which you have put your form ??
edit your php file with template.
Ex. http://www.wpbeginner.com/wp-themes/how-to-create-a-custom-page-in-wordpress/
<?php
/*
Template Name: Customer Details Page
*/
get_header();
?>
// your php file as it is.
<?php get_footer(); ?>
now create new page with "customerdetails" name in wp admin & select "Customer Details Page" in right side column & save.
now your form action path will be as below
<form method="post" name="details" action="<?php echo get_site_url(); ?>/customerdetails">
Now your form is getting submitted & customerdetails page also receive post data.
Any idea why submitted form data loads the search.php page instead of submitting form?
URL: http://domain/contact-us/
On form submission it redirects to: http://domain/?s=&wpforms%5Bfields%5D%5B0%5D%5Bfirst%5D=iuiou&wpforms%5Bfields%5D%5B0%5D%5Blast%5D=uoiu&wpforms%5Bfields%5D%5B1%5D=amigoow%40yahoo.com&wpforms%5Bfields%5D%5B6%5D=General+Feedback&wpforms%5Bfields%5D%5B3%5D=7987&wpforms%5Bfields%5D%5B2%5D=ou&wpforms%5Bhp%5D=&wpforms%5Bid%5D=87632&wpforms%5Bnonce%5D=df749058ef&_wp_http_referer=%2Fcontact-us%2F&wpforms%5Bsubmit%5D=wpforms-submit
I have changed the plugin from ContactForm7 to WPForms but it turns out it's something not related to plugin.
Well your form opening tag looks like this:
<form method="get" action="http://newdev.propakistani.pk" role="search">
So its doing exactly as per this tag. You need to amend action to the URL of the php file that processes the form.
I have a module which had instaled a CMS page with some default URL and some text with form. On this form I have fields and submit. I validate my fields using ajax(send POST in controller of my module). If validation is OK, I redirect to the same page with "succes message".
The problem is, that the default URL of this CMS page in which I make redirect after succes submit can be changed in BO - that's why I cannot just $this->_redirect('default_URL') in my controller, because this url can be changed.
What should I do?
EDIT : Solution: use $this->_redirectReferer() in my controller after success validation
Try to put "back URL" to your form as a hidden field or you can use $this->_redirectReferer() to redirect back to CMS page.
See http://docs.magentocommerce.com/Mage_Core/Mage_Core_Controller_Varien_Action.html#method_redirectReferer
If you want to redirect to some certain CMS page (not the one where form is placed) you can do this:
Add dropdown to system configuration to be able to select "Success page" (much better than hardcode cms page ID)
Redirect to this page in your controller
Code:
$pageId = Mage::getStoreConfig('mymodule/config/success_page');
$page = Mage::getModel('cms/page')->load($pageId);
$this->_redirect($page->getUrlKey());
You can get a store config by using the getStoreConfig method, something like
Mage::getStoreConfig('helloworld_options/messages/hello_message');
See Alan's blog, about detailed instructions how to create custom config values (which you might already have) and to access them.
Use this code for redirect to referer
<?php Mage::getSingleton('customer/session')->setBeforeAuthUrl($this->getRequest()->getRequestUri());?>
For example in custom login form:
<form method="post" action="<?php echo Mage::helper('customer')->getLoginPostUrl() ?>">
<?php Mage::getSingleton('customer/session')->setBeforeAuthUrl($this->getRequest()->getRequestUri());?>
...
...
When clicking my submit button of the form the page is redirecting to the index page i.e the welcome message of codigniter. but the url shows the requested page. . I m confused.
view page:
<form action='welcome/register' method='post'>
<table>......
......
</form>
and in controller page i ve done the validation and if validation fails it have to redirect to register_new page but the redirected page is the welcome page of codeignitor. . But no problem with the url.
This is how you use forms in CodeIgniter. Don't try to use HTML forms like that, just use CodeIgniter style
http://ellislab.com/codeigniter/user-guide/helpers/form_helper.html
Add this to your controller (to load the form helper):
$this->load->helper('form');
In your view
<?php echo form_open('controllername/functionname');?>
<input type ...>
//...more inputs
</form>
It redirects to the original page if action is not specified. It shouldn't redirect to the index page ever unless specified by second controller.
how to manage the use of both $_SERVER['PHP_SELF'] in action of form and htaccess for url-rewriting?
If I submit a form and in the action attribute of it i pass "$_SERVER['PHP_SELF']" and at the same time i am using url rewriting for the same page.. then these two things will contradict each other resulting in the display of action value of form in address bar.. so how can i manage this to get the url rewrited form of $_SERVER['PHP_SELF']?
here the rewrite rule is to change the name of url file likewise as if form is submitted to any file say direction.php then rewrite will change it to something 30/redirect.html
I am not sure what rewrite setup you have got so my guess is you have to specify the url in form action. You'd not be able to use $_SERVER['PHP_SELF'] as it will return the path of file which is actually being executed.
For example:
<form action="'.$_SERVER['PHP_SELF'].'">
to
<form action="'./url/as/per/rewrite'].'">
If this doesn't serve the purpose. You can have a look at $_SERVER['REQUEST_URI'] or
$_SERVER['REDIRECT_QUERY_STRING']
$_SERVER['REDIRECT_URL']
and update the form action value.
I hope it helps.