如何使用Php从粘贴的URL将rss提要保存到数据库?
在一个人将一个链接放入文本输入字段并按“提交”以获取实时内容后,如何将rss提要保存到数据库中?我很抱歉我的英语不好如何使用Php从粘贴的URL将rss提要保存到数据库?,php,rss,Php,Rss,在一个人将一个链接放入文本输入字段并按“提交”以获取实时内容后,如何将rss提要保存到数据库中?我很抱歉我的英语不好 <?php $url = ""; if(isset($_POST['submit'])){ if($_POST['feedurl'] != ''){ $url = $_POST['feedurl']; } } $invalidurl = false; if (@simplexml_load_file($url)) { $feeds
<?php
$url = "";
if(isset($_POST['submit'])){
if($_POST['feedurl'] != ''){
$url = $_POST['feedurl'];
}
}
$invalidurl = false;
if (@simplexml_load_file($url)) {
$feeds = simplexml_load_file($url);
} else {
$invalidurl = true;
echo "<h2>Invalid RSS feed URL.</h2>";
}
$i=0;
if (!empty($feeds)) {
$site = $feeds->channel->title;
$sitelink = $feeds->channel->link;
echo "<h1>".$site."</h1>";
foreach ($feeds->channel->item as $item) {
$title = $item->title;
$link = $item->link;
$description = $item->description;
$postDate = $item->pubDate;
$pubDate = date('D, d M Y',strtotime($postDate));
if($i>=5) break;
?>
<div class="post">
<div class="post-head">
<h2><a class="feed_title" href="<?php echo $link; ?>"><?php echo $title; ?></a></h2>
<span><?php echo $pubDate; ?></span>
</div>
<div class="post-content">
<?php echo implode(' ', array_slice(explode(' ', $description), 0, 20)) . "..."; ?> <a href="<?php echo $link; ?>">Read more</a>
</div>
</div>
<?php
$i++;
}
} else {
if (!$invalidurl) {
echo "<h2>No item found</h2>";
}
}
?>
频道->标题;
$sitelink=$feeds->channel->link;
回声“$site.”;
foreach($feed->channel->item as$item){
$title=$item->title;
$link=$item->link;
$description=$item->description;
$postDate=$item->pubDate;
$pubDate=日期('D,D,M,Y',strottime($postDate));
如果($i>=5)中断;
?>
我应该如何修改它来完成它?
上面的代码完成了从发布的RSS URL获取内容并将其显示给用户的操作。 < P>这取决于你想在DB中采取的方法,如果你不需要搜索提要内的特定元素,你甚至可以将整个内容保存为一个BLUB< /P> < P >这个代码只是为了让你开始,认为这是E。执行尽可能多的插入项,一个更好的替代方法是执行
您的代码容易受到攻击。您应该使用或准备带有绑定参数的语句,如中所述。@AlexHowansky正如我在回答的第一行中所提到的,该代码只是为了让他开始,我还提到他应该在将输入传递给DB之前对其进行清理。为什么否决?我有一个dbconnect.php文件,wo使用它而不是第一行代码会更安全吗?“为什么会投反对票?”因为我每天都会看到SQL注入漏洞,而你的代码却养成了一个非常坏的习惯。OP可能不明白清理意味着什么,也不知道如何正确地进行清理。用一个适当的预处理语句替换查询,我将撤销否决票。好了,这并不比上一次编辑复杂,而且OP会立即退出t foot,谢谢。不,我不需要该内容的任何特定内容,我只想在用户发布url并按submit显示rss提要后将其保存到db。如果您有所需的数据(标题、链接等),您只需创建与数据库交互的代码。您应该开始阅读以下内容:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$stmt = $conn->prepare('INSERT INTO RSS_FEED (title, item, link, descripton, pub_date) VALUES (?, ?, ?, ?, ?)');
$values = array();
foreach ($feeds->channel->item as $item) {
$stmt->bind_param(
'sssss',
$item->title,
$item->link,
$item->description,
date('D, d M Y',strtotime($item->pubDate))
);
$stmt->execute();
}
$stmt->close();
$conn->close();