기본적으로 표시되는 페이지 인 색인 코드가 있습니다. 사용자가 공용 인 경우 수정할 수 없으므로 수정해야합니다. 등록하거나 로그인해야 할 경우 이미 계정이 있습니다. 내 문제는 내 계정에 이미 로그인되어 있지만 (사용자 테이블이 만들어지고 사용자의 세부 정보가 삽입되는 방식으로 삽입되어 있지만 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
}
>
위험 ** ** [** 구식 ** 데이터베이스 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
메신저로 이것에 새, 그래서 조언을 주셔서 감사합니다 – natan