2013-06-07 3 views
1

입력 한 데이터를 유지하기 위해 양식을 가져올 수 없습니다. 이 코드를 수정하여 데이터를 유지하려면 어떻게해야합니까?유효성 검사 후 양식 데이터 보관 - PHP

는 양식 :

<div class="nyhedsdiv"> 

<form name="nyhedsform" onSubmit="return validateForm()" method="post"> 
    <label for="nyheds_overskrift">Overskrift</label> 
    <input id="nyheds_overskrift" name="nyheds_overskrift" type="text" value="<?php echo $nyheds_overskrift; ?>" /> 
    <br /> 
<label for="nyheds_tekst">Nyhed-tekst</label> 
    <textarea id="nyheds_tekst" name="nyheds_tekst" value="<?php echo $nyheds_tekst; ?>"></textarea> 
<br /> 
<label for="nyheds_forfatter">Forfatter</label> 
<input id="nyheds_forfatter" name="nyheds_forfatter" type="text" value="<?php echo $nyheds_forfatter; ?>" /> 
<br /> 
    <button name="opret_nyhed" type="submit">Opret nyhed</button> 
</form> 

PHP 검증 스크립트 : $ _POST는 [ '이름']가 존재하는 경우이와

<div id="fejlbesked"> 

<?php 

    if (isset($_POST['opret_nyhed'])) 
    { 
//mysql_real_escape_string tjekker koden for symboler og sætter backslash ind foran, hvis den finder nogen. 
$nyheds_overskrift = mysql_real_escape_string($_POST['nyheds_overskrift']); 
$nyheds_tekst = mysql_real_escape_string($_POST['nyheds_tekst']); 
$nyheds_forfatter = mysql_real_escape_string($_POST['nyheds_forfatter']); 
$fejlbesked = ''; 

    if(empty($nyheds_overskrift)) 
     { 
$fejlbesked .= '<span class="red">Du skal skrive en overskrift!</span><br />'; 
} 

if(empty($nyheds_tekst)) 
    { 
$fejlbesked .= '<span class="red">Du skal skrive nyheden!</span><br />'; 
} 

    if(empty($nyheds_forfatter)) 
    { 
$fejlbesked .= '<span class="red">Du skal skrive navnet på nyhedens forfatter!</span><br />'; 
} 

    if(empty($fejlbesked)) 
    { 
//Sætter nyheden ind i mysql databasens tabelrækker, der passer til navnene, som er defineret for variablerne. 

$query_ind = "INSERT INTO nyheder VALUES ('', '$nyheds_overskrift', '$nyheds_tekst', '$nyheds_forfatter', NOW())";//mysql_real_escape_string tjekker koden for symboler og sætter backslash ind foran, hvis den finder nogen. 
mysql_query($query_ind) or die (mysql_error()); 
echo "Nyheden er oprettet"; 

    } 

else 
    { 
    echo $fejlbesked; 
    } 
} 

?> 

</div><!--fejlbesked--> 

    </div><!--nyhedsdiv--> 
+4

되어야한다 코드와 코멘트를 영어로 작성하십시오. – powerbuoy

+0

생각하지 않고 코드를 복사/붙여 넣기 만하면됩니다. 향후 게시물에서이를 명심하십시오.) – chmodder

답변

2

여기에 정의되지 않은 변수를 사용하고 있기 때문에 잡으려는 각 변수에 대해 범위가 배열 인 $_POST으로 변경하기 만합니다. 예를

를 들어
value="<?php echo $nyheds_overskrift; ?>" 

그냥 팁

value="<?php echo htmlentities($_POST['nyheds_overskrift']); ?>" 
+0

그냥 그렇게하는 것이 안전할까요? – DanMan

+0

감사. 그것은 훌륭하게 작동했습니다. 나는 나중에 정의되기 때문에 일할 것이다. BTW : 덴마크어 코드 주석 죄송합니다. 코드를 복사하지 않고 붙여 넣기 만하면됩니다. – chmodder

+0

@chmodder 당신은 대단합니다. 유사한 문제로 미래에 사람들을 도울 수있는 답을 받아 들여야한다는 것을 잊지 마십시오. 수락을 받으려면 답안 점수 – Fabio

1
<?php 
echo ' 
<form method="post" action="index.php"> 
    <label>Name:</label> 
    <input type="text" name="Name" value="'.(isset($_POST['Name']) ? $_POST['Name'] : '').'" /> 
</form>'; 
?> 

은 값 속성이 채워집니다 , 그렇지 않으면 비어 있습니다.

+1

배열 색인은 대소 문자를 구분합니다. – DanMan

+0

@DanMan 그것을 지적 해 주셔서 감사합니다. 그것은 작은 오타였습니다. – MisterBla

+0

Richard A.에게 감사하지만 Fabio의 제안을 사용했습니다. 나는 그것이 덜 혼란스럽게 보인다고 생각한다. 방금 PHP를 배우기 시작 했으므로 지금은 간단하게하고 싶습니다. 어쨌든 고마워;) – chmodder