2014-11-21 2 views
0

저녁 식사 예약을 위해 양식이있는 레스토랑 웹 사이트 예약 페이지를 만들었습니다. 여기에는 사용자가 파티에서 식사를 할 사람의 수를 선택할 수있는 드롭 다운 상자가 있습니다. 또한 VIP 영역에 앉을 지 여부를 선택할 수있는 라디오 버튼이 있습니다.사용자 선택에 따라 변수 추가

양식 유효성 검사가 완료되면 사용자가 입력 한 예약 세부 정보가 표시되는 확인 페이지로 이동합니다.

파티원은 예약 수수료에 대해 5 파운드가 추가로 부과되며 VIP 구역에 앉기를 원할 경우 추가로 5 파운드가 부과됩니다.

나는이 두 요인을 합쳐서 확인 페이지에 총 예약 수수료를 표시하고 싶지만, 현재 가지고있는 코드는 이것을 수행하지 않습니다.

<b>Total Reservation Costs: </b> £ 
<?php 
if (isset($_POST['party']) && is_numeric($_POST['party'])) { 
    $party = (int)$_POST['party']; 
    $vip = isset($_POST['vip']) ? 5 : 0; 
    echo "Total is: " . (($party * 5) + $vip); 
} 
?> 

현재 어떤 계산이 에코되지는 누구나 수정할 수있을 것 : 여기

<?php 
session_start(); 
if (isset($_POST['submit'])) { 
    $_SESSION['party'] = $_POST['party']; 
} 

if (!empty($_POST['vip'])) 
    $_SESSION['vip'] = $_POST['vip']; 
?> 

... 

<strong>Select Party Size* :</strong> 
<br> 
<select name="party" id="party" value="<?php echo $party;?>"> 
<option value="">Please Select</option> 
<option <?php if (isset($party) && $party=="1") echo "selected";?> value="1">1 Person (+£5)</option> 
<option <?php if (isset($party) && $party=="2") echo "selected";?> value="2">2 People (+£10)</option> 
<option <?php if (isset($party) && $party=="3") echo "selected";?> value="3">3 People (+£15)</option> 
<option <?php if (isset($party) && $party=="4") echo "selected";?> value="4">4 People (+£20)</option> 
<option <?php if (isset($party) && $party=="5") echo "selected";?> value="5">5 People (+£25)</option> 
<option <?php if (isset($party) && $party=="6") echo "selected";?> value="6">6 People (+£30)</option> 
<option <?php if (isset($party) && $party=="7") echo "selected";?> value="7">7 People (+£35)</option> 
<option <?php if (isset($party) && $party=="8") echo "selected";?> value="8">8 People (+£40)</option> 
<option <?php if (isset($party) && $party=="9") echo "selected";?> value="9">9 People (+£45)</option> 
<option <?php if (isset($party) && $party=="10") echo "selected";?> value="10">10+ People (+£50)</option> 
</select> 

<strong> VIP area* : </strong> <br><br> 
Yes (+£5) <input type="radio" name="vip" <?php if (isset($vip) && $vip=="Yes") echo "checked";?> value="Yes"> 
<br><span id="vip" class="error"><?php echo $vipErr;?></span><br> 
No <input type="radio" name="vip" <?php if (isset($vip) && $vip=="No") echo "checked";?> value="No"> 

내 확인 페이지에서 관련 코드입니다 : 여기

내 예약 페이지에서 관련 코드 내 코드 그래서 내가 뭘 잘못했는지 이해할 수 있니? 감사합니다

+0

"Total is :"이 표시됩니까? – dan08

+0

@ dan08 아니, 아니야 – Oscar

+0

내 대답이 도움이되지 않는다고 생각 했나요? http://stackoverflow.com/questions/27050838/adding-two-variables-php/27050899#27050899 – robbmj

답변

0

나는 우리 생각 사용자가 응용 프로그램의 확인 페이지로 전송되는 것을 볼 필요가 있지만 유효성을 확인한 다음 리디렉션하는 경우 사용자가 새 페이지로 이동하면 $ _POST 전역이 비어 있습니다. 당신이 대신 같은 어쩌면, SESSION에 뭔가를 POST를 추진하고있어 나타납니다 또한

<b>Total Reservation Costs: </b> £ 
<?php 
    if (isset($_SESSION['party']) && is_numeric($_SESSION['party'])) { 
     $party = (int)$_SESSION['party']; 
     $vip = isset($_SESSION['vip']) ? 5 : 0; 
     echo "Total is: " . (($party * 5) + $vip); 
    } 
?> 

, 그냥 제쳐두고 - 당신이 응용 프로그램의 보안을 위해 $ 세션으로 검증되지 않은 $의 POST 정보를 쑤셔 넣어하지 않을 수 있습니다. $ POST 정보를 확인한 다음 $ SESSION에 밀어 넣으십시오.

+0

이것은 총 비용이 정확하지 않거나 어쩌면 어딘가에서 계산에 실수를했을 수도 있습니다. 예 : 1 명 (5 파운드)과 예 (25 파운드)를 입력하면 총 비용 30 파운드가 표시됩니다. – Oscar

+0

실제로 이상하게 작동하는 것 같습니다. 내가 처음 잘못된 가격을 묻는 이유는 무엇입니까 – Oscar

+0

세션이 PHP의 상태 유지에 대한 시도이기 때문에 여러분이 볼 수있는 차이점은 세션 이전에 있었던 데이터 때문일 수 있습니다. @AdamMacDonald가 게시물 매개 변수 강화하기 사용자 입력 데이터 신뢰 안 함 – gadhra

3

에코되는 계산에 영향을 줄 수있는 몇 가지 문제가 있습니다.

첫째, 변화

<select name="party" id="party" value="<?php echo $party;?>"> 

<select name="party" id="party"> 

에 값은 옵션 목록에서오고 있기 때문이다.

다음, 변경 :

(isset($party) && $party=="1") 

(isset($_SESSION['party']) && $_SESSION['party']=="1") 

셋째, 당신이 방법 .. 게시물 매개 변수를 강화하려는 아마 이런 식으로 뭔가 :

$_SESSION['party'] = htmlentities($_POST['party'],ENT_QUOTES); 
관련 문제