我有我的索引代码,这基本上是出现的网页,如果用户是公开的,可以这样的CD数据库,但不能修改它,如果他们想要修改它们,他们必须注册或登录如果已经有一个帐户。我的问题是在我的发送代码中,虽然我已经登录了我的帐户,但是cd的新细节未被插入到表中(用户表已创建并且用户的详细信息以他们必须的方式插入)。这就像它没有得到我发布的用户名和艺术家。当我回显变量来查看它们的值时,我得到了无定义变量错误。任何帮助将不胜感激。未定义的变量错误在PHP代码
指数
<?php
include 'header.php';
if (isset($_SESSION[ 'username' ])) {
?>
<h2>New cd</h2>
<form action="send.php" method="post">
<div class="text">
Artist <br/>
<textarea name="artist"></textarea>
<br/>
Title <br/>
<textarea name="title"></textarea>
</div>
<input type="submit" value="OK" class='submit' />
</form>
<?php
}
else {
?>
<p>
To modify the database, <a href="login.php">login</a>.
</p>
<p>
To create a new account, <a href="register.php">register</a>.
</p>
<?php
}
?>
出于某种原因,我不能上传该文件的其余部分,但基本上它显示了CDS的细节的表格,如果用户登录可以看到用户名列,如果他们是公开的,那么他们只能看到cd艺术家和标题栏。
发送码
<?php
include 'prelude.php';
if (isset($_SESSION[ 'username' ]) && isset($_POST[ 'cdartist' ])) {
$cdartist = $_POST[ 'cdartist' ];
$cdtitle= $_POST['cdtitle'];
$userid=$_SESSION['userid'];
$res=mysql_query(
" SELECT *
FROM cds
WHERE cdartist='".$cdartist."' AND cdtitle='".$cdtitle."';"
);
if (mysql_num_rows($res)!=0){
mysql_query(
"DELETE FROM cds
WHERE cdartist='".$cdartist."' AND cdtitle='".$cdtitle."' AND userid='".$userid."';");
header ('Location: index.php');
}
else{
mysql_query(
"INSERT INTO cds
SET
cdartist = '" . $cdartist . "',
cdtitle = '". $cdtitle . "',
userid = '" . $userid . "';"
);
}
header('Location: index.php');
}
else {
?> To have this right you need to login. <?php
}
>
**危险**:您正在使用[an **过时的**数据库API](http://stackoverflow.com/q/12859942/19068)并应使用[现代替换](http:// php.net/manual/en/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻击](http://bobby-tables.com/)**,现代的API会使[防御]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己从。 – Quentin 2014-08-31 09:57:17
即时消息在这新,所以感谢您的意见 – natan 2014-08-31 10:02:23