PHP提交问题,变量变化?

时间:2015-07-21 03:01:55

标签: php html forms

我正在尝试为人们填写要求服务的表格。他们必须为其中一个字段输入电话号码。为确保电话号码有效,我已将PHP设置为使用我的提供商API向所提供的号码发送短信。

短信发送正常,并附带一个PHP变量发送。 (在9999和99999之间的随机int。)此代码已成功发送,但每次提交代码都会随着函数的运行而更改。这样做的问题是您收到了文本,但是当您在代码中输入文本时,您已经提交了表单以进行验证。我曾尝试在html中使用按钮类型,但无法想象如何使用它运行PHP。 下面是他们填写的第一个发送信息的表格。

<?php
$confirmcode = rand(9999, 99999);
//echo "<br/><br/><br/><br/><br/><br/>Confirmation Code:"."<br/><br/>$confirmcode<br/><br/><br/>";
if (isset($_POST['submit'])){
        // Validation
        //Check Name is non-blank
            if( 0=== preg_match("/\S+/", $_POST['fname'])){
                $errors['first_name'] = "Please enter your name.";
            }

            if (0=== preg_match("/^[\+0-9\-\(\)\s]{10,}+$/", $_POST['phone'])){
                $errors['phone'] = "Please enter a phone number";
            }

            //Check Email has required symbols
            if (0=== preg_match("/.+@.+\..+/", $_POST['email'])){
                $errors ['email'] = "Please enter a valid email address.";
            }
        //End Validation

    $errors = array();
    $name = $_POST['fname'];
    $address = $_POST['address'];
    $phone = $_POST['phone'];
    $email = $_POST['email'];



    //Sending Confirmation SMS code to confirm phone number.
            // Declare the security credentials to use
  $username = "############";
  $password = "############";

  // Set the attributes of the message to send
  $message  = "Hello " ."$name" ."Your confirmation code is: " ."$confirmcode".". " ."Please enter it .". "on he appraisal request form.";
  $type     = "1-way";
  $senderid = "SanctuaryRE";
  $to       = $_POST['phone'];

  // Build the URL to send the message to. Make sure the 
  // message text and Sender ID are URL encoded. You can
  // use HTTP or HTTPS
  $url = "http://api.directsms.com.au/s3/http/send_message?" .
         "username=" . $username . "&" .
         "password=" . $password . "&" .
         "message="  . urlencode($message) . "&" .
         "type="     . $type . "&" .
         "senderid=" . urlencode($senderid) . "&" .
         "to="       . $to;

  // Send the request
  $output = file($url);

  // The response from the gateway is going to look like 
  // this:
  // id: a4c5ad77ad6faf5aa55f66a
  // 
  // In the event of an error, it will look like this:
  // err: invalid login credentials
  $result = explode(":", $output[0]);
    //END SMS


  header("Location: process.php");
}

?>

他们被推上去确认他们被发送的代码。

<html>
<div class="wrapper2">
<form action="" method="POST">
<input type="text" class="textfieldlong" placeholder="Confirmation Code" name="giventoken"> 
<input type="button" class="submit" value="Verify Phone Number" name="submit2" id="submit2"> 
</form>
</html>

<style>
.wrapper{
    display:none;
}
</style>
</div>

<?php
include "index.php";
    //$token = $_POST['giventoken'];
    //if (!strcmp($confirmcode,$token)){
    //  echo "Match";
    //}

echo "$confirmcode";
?>

随机int在开头生成。请帮忙!日Thnx。 :d

1 个答案:

答案 0 :(得分:0)

每次都会创建随机数。

您必须为每个特定用户编制数字,然后检查他们何时输入代码。您不能指望用户获取文本并立即确认。唯一真正的方法是对数据库进行数据库。

使用userid和代码设置一个表,然后检查他们确认您是否已将该代码发送给该用户。