2017-10-04 1 views
0

나는 웹 개발 기술을 향상시키기 위해 아주 기본적인 웹 사이트를 사용하고 있습니다. 나는 사용자가 작성한 양식의 입력을 처리하기 위해 PHP를 사용하기 시작했습니다. 스크립트는 양식에서 데이터를 가져온 다음 Pushbullet API를 사용하여 입력 한 데이터를 휴대 전화로 전송합니다. 나는 pushmsg라는/usr/bin 디렉토리에 둔 bash 스크립트를 실행하기 위해 exec 함수를 사용하고있다. 이 스크립트는 세 가지 인수를 취합니다.이 인수는 양식의 세 가지 정보입니다. 문제는 세 변수가 exec 함수 안에있을 때 작동하지 않는 것입니다. 메시지는 내 전화기로 보내지지만 기본적으로 pushmsg 명령을 사용하여 입력 한 데이터가없는 헤더 만 보냅니다. 여기 exec를 사용할 때 인수로 PHP 변수

코드입니다 : 또한

<html> 
    <body> 
    <link rel="stylesheet" type="text/css" href="style.css"> 

    <?php 
    $name = $_POST["name"]; 
    $phone = $_POST["phone"]; 
    $core = $_POST["core"]; 
    exec('pushmsg echo $name echo $phone echo $core'); 
    ?> 
    <h1>request submited successfully</h1> 
    <p>thanks for sending yout request, <?php echo $_POST["name"]; ?>.<br> 
    a text will be sent to <?php echo $_POST["phone"]; ?> once your details have been confirmed. 
    </p> 
    <div class="center"> 
    <button class="button" action="/index.html">home page</button> 
    </div> 
    </body> 
    </html> 

, 나는 사용자의 입력과 간부 기능을 사용하는 것이 특히 안전하지 않습니다 알고 있지만,이 웹 사이트는에서 언제든지 공개 될 수 없습니다 가까운 장래에, 내가 필요할 때 그것을 처리 할 것입니다.

도움을 주시면 감사하겠습니다.

$command = "pushmsg echo $name echo $phone echo $core"; 
$output = exec($command); 

당신은 $output 변수에 exec의 출력의 마지막 줄을 잡을 수 :

+4

큰 따옴표를 사용하고 exec에서 에코를 제거해보십시오 – shashi

+0

그리고 하나님의 사랑을 위해 사용하기 전에'$ _POST' 데이터의 유효성을 검사하십시오! – fubar

+0

그게 다 했어, 고마워. 그리고 웹 사이트 @fubar를 게시 할 때 내가 말했던 것처럼 내가 살펴볼 것입니다. –

답변

1

는 내가 PHP 변수로 명령을 작성하고 다음 명령 자체로 것을 사용하는 것이 좋습니다 것입니다. 또는 shell_exec을 사용하여 명령의 전체 출력을 포착하십시오.

<html> 
<body> 
<link rel="stylesheet" type="text/css" href="style.css"> 

<?php 
$name = $_POST["name"]; 
$phone = $_POST["phone"]; 
$core = $_POST["core"]; 
$command = "pushmsg echo $name echo $phone echo $core"; 
$output = exec($command); 
?> 
<h1>request submited successfully</h1> 
<p>thanks for sending yout request, <?php echo $_POST["name"]; ?>.<br> 
a text will be sent to <?php echo $_POST["phone"]; ?> once your details have been confirmed. 
</p> 
<div class="center"> 
<button class="button" action="/index.html">home page</button> 
</div> 
</body> 
</html> 
1

당신은 @shashi 및 @mstruebing가 지적한 바와 같이, 단순히 두 배에 작은 따옴표를 교체 할 필요

$command = "pushmsg $name $phone $core"; 
$output = exec($command); 
0

로 변경해야합니다. 이것은 그것이 잘 작동했다. 나는 또한 에코를 제거했다. 처음에는 거기에 있어야하지 않았기 때문이다. 관심있는 사람이 있으면 교체 :

old: exec('pushmsg echo $name echo $phone echo $core'); 
    new: exec("pushmsg echo $name $phone $core"); 

감사합니다.

관련 문제