执行PHP而不重定向到动作链接文件?

时间:2013-02-17 00:44:29

标签: php

如果我有一个执行PHP脚本的提交按钮,我是否可以执行它而无需实际访问该页面,即:process.php?我已经习惯了能够做到这一点的JavaScript。

(为了记录,我在谈论没有AJAX,没有重定向一次在其他页面上,不,我不是很有希望。)

3 个答案:

答案 0 :(得分:3)

您能够使用JavaScript执行此操作的原因是JavaScript可以在客户端的浏览器中执行。另一方面,PHP总是在服务器上执行并将HTML返回给客户端。简而言之,不,你不能。

答案 1 :(得分:1)

没有AJAX的一种方法是将表单提交给不可见的iframe,如下所示:

<form action="blah.php" target="theReallyCoolIframe">...</form>
<iframe name="theReallyCoolIframe></iframe>

请注意,这不是一个非常优雅的解决方案; AJAX是一个更好的解决方案,并不是那么困难 - 你应该查看jQuery及其AJAX APIs

答案 2 :(得分:0)

如果您想使用仅针对您问题的PHP解决方案,请尝试此操作。

<?php


function submit_form(){
    $host = "localhost";
    $user = "user";
    $password = "password";
    $database = "database";   

    $firstname  = filter_var($_POST['firstname'], FILTER_SANITIZE_STRING); 
    $lastname   = filter_var($_POST['lastname'], FILTER_SANITIZE_STRING); 
    $email  = filter_var(filter_var($_POST['email'],FILTER_SANITIZE_EMAIL),FILTER_VALIDATE_EMAIL);


    // open connection to database
    $link = mysqli_connect($host, $user, $password, $database);
        IF (!$link){
            echo ("Unable to connect to database!");
        }
        ELSE {
           //INSERT VALUES INTO DATABASE
           $query = "INSERT INTO users (firstname,lastname,email) 
VALUES('".$firstname."', '".$lastname."', '".$email."'";
           return mysqli_query($link,$query);

        }
//close connection to database
        mysqli_close($link);

    }


$form = <<<EODuserform
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <title>Form</title>
    </head>
        <form action="{$_SERVER['PHP_SELF']}" method="POST" name="userform">
            <label for='first'>First Name:</label></br>
            <input type="text" name="firstname" id="first" maxlength="25" tabindex='1' VALUE="firstname" /></br>
            <label for='first'>Last Name:</label></br>
            <input type="text" name="lastname" id='lastname' maxlength="25" tabindex='2' VALUE="lastname" /></br>
            <label for='email'>E-mail:</label></br>
            <input type="text" name="email" id='email' maxlength="100" tabindex='3' VALUE="email" /></br>
            <input type="submit" class='button' name="submit" value="submit" tabindex='4' />
            </form>
    </body>
</html>
EODuserform;


IF(!IsSet($_POST['submit'])){ // Check if form is not send, if not display empty form.

    echo $form;
}

ELSE{
// in the case you want to send something to the database use 
submit_form();
echo ('Thanks for submitting your form');
}

?>

这是一个非常基本的脚本,您可以在此页面上找到类似的脚本:Form not saving to database