我有以下脚本。在远程 php 脚本中,一条记录被添加到数据库表中。
当我在这个脚本中留下最后一行(print $html;)时,添加了 2 条记录!
当我省略该行时,仅添加一条记录。但显然我没有任何输出。
如果我将输出写入文件,则仅添加一条记录。输出是一个 html 页面。
<?php
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, 'http://somedomain.nl/some.php?PARAMS=blabla');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// cookie settings
curl_setopt($ch, CURLOPT_COOKIEJAR, 'some.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'some.txt');
// set data to be posted
curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST);
// perform the request
$html = curl_exec($ch);
// close the connection
curl_close($ch);
print $html;
?>
有什么建议么?
Gr. Han
/** 更新
<select class="p_ssyskey_mke" name=P_SSYSKEY_MKE onchange="MerkSubmitP()">
<option value="">selecteer een merk</option>
<option value="A0001E2Q">Subaru</option>
<option selected value="A0001E2S">Toyota</option>
<option value="A0001E2T">Volkswagen</option>
</select>
这是$html的一个片段,整个页面相当大。
打印 html 的子字符串表明,当 '
@Poonam:当我在 ob_clean_end() 之后再次打印 $html 时,会添加第二条记录。
现在我已经实施了一个非常粗略的解决方法。由于记录有时间戳,如果最后一条记录的时间不超过 1 秒,我会阻止添加第二条记录。我讨厌它,但现在它有效。
Gr. Han
/** 更新
这个问题不是来自 cURL,尝试使用 file_get_contents 做同样的事情会做同样的事情。
也许原因在于我正在使用的 mod_rewrite 。
Gr. Han
/** 更新
最有可能的是 mod_rewrite。当使用直接 URL 而不是通过重写规则时,它的行为符合预期。
这些是我正在使用的重写规则:
RewriteEngine On
RewriteRule ^zoek/(.*)$ parts.php?PARAMS=$1 [L]
Parts.php 是上面发布的脚本。
Gr. Han