我从另一个Stack Overflow问题回答了here。
我的数据库中有一个名为track的mysql表。
$server = "host";
$username = "user";
$password = "pass";
$database = "database";
$connId = mysql_connect($server,$username,$password) or die("Cannot connect to server");
$selectDb = mysql_select_db($database,$connId) or die("Cannot connect to database");
$tracking_page_name="example";
$ref=$_SERVER['HTTP_REFERER'];
$agent=$_SERVER['HTTP_USER_AGENT'];
$ip=$_SERVER['REMOTE_ADDR'];
$host_name = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$strSQL = "INSERT INTO track (tm, ref, agent, ip, tracking_page_name, host_name) VALUES(curdate(),'$ref','$agent','$ip','$tracking_page_name','$host_name')";
$test=mysql_query($strSQL);
基本上我希望将此脚本收集的所有数据放入我的数据库中。但是,无论我键入什么,即使我将变量更改为文本,也不会将任何内容写入数据库。我可以使用另一个脚本从数据库中读取,但是我无法通过这个来向db添加任何信息。有没有我似乎无法找到的拼写错误?
我只想了解访问该网页的任何人的信息。
编辑:我试图填写名为" host_name"的字段,但在我的数据库中它有一个不同的名称。这里显示的原始脚本不会显示错误,我也没有检查过我的所有字段是否按顺序排列。那是错误。
答案 0 :(得分:0)
许多可能性:
user
具有读取权限但没有对数据库或表的写权限,则读取操作将成功,但写入操作将失败。更改...
$test=mysql_query($strSQL);
为...
if(!$test=mysql_query($strSQL)) die(mysql_error());
它将显示操作失败的原因(docs)。
另外,如果你开始不使用MySQL
功能。他们正在从PHP中删除,因此您将来会给自己做更多的工作。请改为使用MySQLi
或PDO_MySQL
(docs)。
最后,从不只是在SQL查询中插入从浏览器中获取的文本。用户可以将$_SERVER['HTTP_REFERER']
和$_SERVER['HTTP_USER_AGENT']
的值操作为任何内容,包括一个字符串,使您可以执行用户想要的任何查询(删除表格,删除数据......)。了解预备语句和参数化查询并使用它们
答案 1 :(得分:0)
回应这一行:
>>> from urllib.parse import urlparse
>>> url = "http://supremecosts.com/contact-us/"
>>> obj = urlparse(url)
>>> obj
ParseResult(scheme='http', netloc='supremecosts.com', path='/contact-us/', params='', query='', fragment='')
>>> obj.geturl()
'http://supremecosts.com/contact-us/'
>>> obj.netloc
'supremecosts.com'
并在SQL控制台上运行它。寻找错误并确保传入值。