在我的应用程序中,我必须在注册时将短信发送给用户。但是在数据库中插入记录时我想在浏览器中点击此URL。
任何人都可以建议如何在背景中运行此网址
http://www.myurl.com/smpp/sendsms?username=XX&password=XX&to=XX&from=XX&text=Test
答案 0 :(得分:5)
这取决于您对background
的意思,但我认为您的意思是用户不会被重定向到该页面。
如果我是你,如果安装了它,我会选择cURL,因为你似乎唯一想做的就是提出一个普通的请求,也许,阅读回复。下面的代码未经测试,但应该给你一个提示。
$req = curl_init();
curl_setopt($req, CURLOPT_URL,"theaddress_and_params");
curl_exec($req);
答案 1 :(得分:2)
如果您这样做,您将在URL(或标题)中公开用户名和密码。让用户提前登录并使用会话变量。
答案 2 :(得分:1)
不要从客户端发送此信息,因为每个用户只需加载一些(可能是恶意的)参数即可轻松“伪造”数据。 “用户名”和“密码”根本不受保护,我确信您的服务会很快失效。
相反,您可以使用PHP curl函数在后台(服务器端)轻松完成此操作:
答案 3 :(得分:1)
public function get_url($url)
{
$cmd = "curl --max-time 60 ";
$cmd .= "'" . $url . "'";
$cmd .= " > /dev/null 2>&1 &";
exec($cmd, $output, $exit);
return $exit == 0;
}
它将通过cli调用curl。它将在后台运行。
答案 4 :(得分:0)
你可以使用pcntl php扩展来分叉子进程。
(实现此目的的库:https://github.com/kriswallsmith/spork)
答案 5 :(得分:0)
我认为没有多线程这样的概念(实质上就是你要求的),因为PHP代码中的所有内容都是逐步运行的,但是你可以找到解决方案。请参阅this和this个问题及其答案。
PHP中没有多线程的原因是因为在服务器中处理了所有内容,并且作为客户端,您已经收到完成的响应,因此PHP中的“在后台运行”是与“按顺序运行”相同。
答案 6 :(得分:0)
当用户点击提交按钮时进行AJAX调用。这会导致该URL上的脚本在后台运行,而当前的PHP会在数据库中插入记录。
答案 7 :(得分:0)
的Ajax?使用ajax在div中加载该url,同时保存使用ajax调用另一个php文件的记录。
答案 8 :(得分:0)
$url = 'http://yoursmsgateway.com/WebSMS/SMSAPI.jsp?username='.$smsuser.'&password='.$smspwd.'&sendername='.$smssender.'&mobileno='.$number.'&message='.urlencode($message);
echo $url;
$mystring = get_data($url);
//echo "hi!";
echo $mystring;
function get_data($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
您可以尝试此代码,但您必须安装cUrl DLL文件。安装CURL的过程如下: -
1.)打开php.ini文件
2.)找到这个dll文件---> ;延长= php_curl.dll
3.)删除; (分号)
4.)例如--->延长= php_curl.dll
5.)保存(Ctrl + s)