2015-01-23 2 views
1

smert gateway로 malert.in을 사용하고 있습니다. 사용자가 입력 한 세부 정보를 보내려고하지만 $ name 이름 대신에 보내집니다.malert.in 게이트웨이를 통해 PHP를 사용하여 SMS를 보낼 수 없습니다.

<!DOCTYPE HTML> 
<html> 
<head> 

</head> 

<html> 
    <body> 
    <form action='sms.php' method='post'> 
     <div> 
      <label for='name'>Name</label> 
      <input type='text' name='name' id='name'/> 
     </div> 
     <div> 
      <label for='pnr'>Pnr</label> 
      <input type='text' name='pnr' id='pnr'/> 
     </div> 
     <div> 
      <input type='submit' name='send' value='send'/> 
     </div> 
    </form> 
    </body> 
</html> 

<?php 
    if(isset($_POST['send'])) 
{ 
    $name = $_POST['name']; 
    $pnr = $_POST['pnr']; 

    header('Location:http://malert.in/new/api/api_http.php?username=uname&password=pass&senderid=Alerts&to=7098765438,9454321121&text=$name%20$pnr%20success&route=Transaction&type=text&datetime=2015-01-23%2015%3A15%3A14'); 
} 
? 

실수는 어디에 있습니까? 나는 모든 것을 검사했다.

+2

사용하지 마십시오! 귀하는 귀하의 페이지를 보는 모든 사람에게 암호를 제공합니다. 대신 컬 사용 – exussum

+0

작동하지 않는 것이 있습니까? 오류 메시지가 나타 납니까? – FeedTheWeb

+0

을 실제 질문으로 보내면 작업중인 문서를 게시 할 수 있습니까? 그들의 API를 모른 채 말하기가 힘들다. – exussum

답변

1

변수는 작은 따옴표로 평가되지 않습니다.

header('Location: ...&text='.$name.'%20$pnr%20success&route=Tra...'); 
2

변수는 'text=$name' 같은 단일 인용 문자열 내부 확장,하지만 "text=$name" 같은 이중 인용 된 문자열 내부되지 않은 : 당신은 큰 따옴표를 사용하거나 함께 각각의 문자열 조각을 추가하거나해야합니다. 또한 URL에 문자열을 추가해야하는 경우 적절하게 urlencode()을 사용하여 이스케이프 처리해야합니다. 다음과 같이 할 수 있습니다.

header('Location:' . 
    'http://malert.in/new/api/api_http.php' . 
    '?username=uname' . 
    '&password=pass' . 
    '&senderid=Alerts' . 
    '&to=7098765438,9454321121' . 
    '&text=' . urlencode("$name $pnr success") . 
    '&route=Transaction' . 
    '&type=text' . 
    '&datetime=' . urlencode('2015-01-23 15:15:14')); 
관련 문제