我正在编写脚本,它从表单中的网址中提取电子邮件并将其添加到数据库中。 我有两个问题:
1.只有来自上一个网址的电子邮件才会添加到数据库中。
2.如何向数据库添加电子邮件?;)当我使用变量$ email或$ email [0]时,我在表中收到一个空字段或数组。我通过使用foreach循环避免了这种情况,但我希望你能找到一些更方便的解决方案。
$linki = explode("\n", $_POST['linki']);
$db = new mysqli('localhost', 'root', 'root', 'linki');
if (mysqli_connect_errno()) {
echo 'error: ';
exit;
}
foreach ( $linki as $link) {
$przetwarzany_url = file_get_contents($link);
preg_match( "/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $przetwarzany_url, $email);//email
$query = "INSERT INTO urle set adres = '$email' "; //this query doens't add the email to db
$result = $db->query($query);
}
这是print_r的输出($ link);在foreach循环中:
firsturl.com array(0) { } secondurl.com array(1) { [0]=> string(17) "xxx@xxx.xxx" }
答案 0 :(得分:2)
你有很多失败点:
$link
是否有效 - 因为它来自网络表单,没有任何东西可以阻止恶意用户输入“http://childporn.com”之类的内容,您的脚本然后将尝试获取。file_get_contents()
是否实际返回了任何内容为您的代码添加检查以处理所有这些问题,您可能会发现为什么只有一些插入才能成功。