2016-08-15 6 views
1

Вот мой текущий код:Как получить данные POST из текстового поля?

<?php 
$apikey='IGNORE-THIS-VARIABLE'; 

// All URLS to be sent are hold in an array for example 
$urls=array('http://www.site1.com','http://www.site2.com/'); 

// build the POST query string and join the URLs array with | (single pipe) 
$qstring='apikey='.$apikey.'&urls='.urlencode(implode('|',$urls)); 

// Do the API Request using CURL functions 
$ch = curl_init(); 
curl_setopt($ch,CURLOPT_POST,1); 
curl_setopt($ch,CURLOPT_URL,'http://www.example.com/api.php'); 
curl_setopt($ch,CURLOPT_HEADER,0); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch,CURLOPT_TIMEOUT,40); 
curl_setopt($ch,CURLOPT_POSTFIELDS,$qstring); 
curl_exec($ch); 
curl_close($ch); 
?> 

Мой PHP код работает, но вот линия У меня возникли проблемы с:

$urls=array('http://www.site1.com','http://www.site2.com/'); 

В основном я просто хочу, чтобы иметь текстовую область на мой веб-сайт, на котором пользователи могут вводить список URL-адресов (по одному в каждой строке), а затем отправлять его с помощью кода PHP выше.

Мой код работает, когда у меня только есть URL-адреса, встроенные в код, как вы можете видеть выше, но я просто не могу понять, как заставить его работать с текстовой областью ... Любая помощь будет оценена.

+0

, что страница вашей подавшее заявку от? как у вас есть пользователь, который вводит эти URL-адреса в вашу форму, потому что я не помню текстовые поля, делающие многострочные строки, только textarea. –

+0

Да, у меня есть пользователи, которые отправляют URL-адреса. Извините, я имел в виду текстовое поле. Форма находится на 'submit.php', и она отправляется на' api.php'. – Edward

ответ

2

Вы можете сделать это, как показано ниже (на той же странице PHP): -

<form method = "POST"> 

<textarea name="urls"></textarea><!-- add a lable that please enter new line separated urls --> 

<input type = "submit"> 

</form> 

<?php 

if(isset($_POST['urls'])){ 
    $apikey='IGNORE-THIS-VARIABLE'; 

    // All URLS to be sent as new-line separated string and explode it to an array 
    $urls=explode('\n',$_POST['urls']); //Or $urls=explode('\\n',$_POST['urls']); 
    // if not worked then 
    //$urls=explode(PHP_EOL,$_POST['urls']); 

    // build the POST query string and join the URLs array with | (single pipe) 
    $qstring='apikey='.$apikey.'&urls='.urlencode(implode('|',$urls)); 

    // Do the API Request using CURL functions 
    $ch = curl_init(); 
    curl_setopt($ch,CURLOPT_POST,1); 
    curl_setopt($ch,CURLOPT_URL,'http://www.example.com/api.php'); 
    curl_setopt($ch,CURLOPT_HEADER,0); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_TIMEOUT,40); 
    curl_setopt($ch,CURLOPT_POSTFIELDS,$qstring); 
    curl_exec($ch); 
    curl_close($ch); 
} 
?> 

Примечание: - Вы можете отделить форму и логику на двух разных страницах. Я думаю, что это сень.

Вы можете использовать текст-зону, а затем вы должны затем взорваться \n или если не работает, то взрываются от PHP_EOL к исходной строке URL-адрес и отдых код такой же, как и выше

+0

Работает почти идеально, но можем ли мы сделать это текстовым полем, где URL-адреса разделены линией? – Edward

+0

@edward. Вы имеете в виду как теги? Возможность добавить несколько? –

+0

Вы должны проверить метод запроса сервера. –

1

Вы можете перейти к форме значение, как в нижнем поле. любой тег в форме HTML имеет атрибут имени, назначает имя для любого текстового поля, вводит или выбирает тег.

<form method="post" name="first_form"> 
    <input type="text" name="url" value="" /> 
    <textarea name="note"></textarea> 
    <input type="submit" value="Post" /> 
</form> 

В PHP вы можете передать значение, используя два метода: $ _GET или $ _POST. присвоить имя тега, которое вы указываете для тега HTML ($ _POST ['note'] или $ _POST ['url']), а также вы можете сделать его как массив $ _POST.

<?php 
    if(isset($_POST)){ 

    // display the posted values from the HTML Form 
    echo $_POST['note']; 
    echo $_POST['url']; 

    } 
?> 

Ваш код:

$apikey='IGNORE-THIS-VARIABLE'; 

    // All URLS to be sent are hold in an array for example 
    $urls=array('http://www.site1.com','http://www.site2.com/'); 

    // build the POST query string and join the URLs array with | (single pipe) 
    $qstring='apikey='.$apikey.'&urls='.urlencode(implode('|',$urls)); 

    // Do the API Request using CURL functions 
    $ch = curl_init(); 
    curl_setopt($ch,CURLOPT_POST,1); 
    curl_setopt($ch,CURLOPT_URL,'http://www.example.com/api.php'); 
    curl_setopt($ch,CURLOPT_HEADER,0); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_TIMEOUT,40); 
    curl_setopt($ch,CURLOPT_POSTFIELDS,$qstring); 
    curl_exec($ch); 
    curl_close($ch); 
Смежные вопросы