Я выполнил var_dump($content); Так что это точно строка:
string(828) "..........my text here............"
Ещё я точно знаю, что мой CGI скрипт работает, если я вручную буду вводить данные:
http://localhost/speciallocation/local/tokenize/morgot.py?someamountoftext=Enter your text here
Вывод: ['Enter', 'your', 'text', 'here']
Но, когда я нажимаю на кнопку submit, выводится только название моего файла, ввиду того, что я не отсылал его на обработку в CGI, а просто вывел его echo'м. Если просто вывести echo'м содержимое файла, это также даст результат.
Это наводит меня на мысль, что проблема где-то в части отправить\принять данные.....
Какие-нибудь мысли, народ?
Мой php код:
<?php
require_once(DIR . '/../../config.php');
require_once($CFG->dirroot . '/local/tokenize/classes/forms/tokenization.php');
$PAGE->set_url(new moodle_url('/local/tokenize/tokenization.php'));
$PAGE->set_context(\context_system::instance());
$PAGE->set_title(get_string('TOKENIZATOR', 'local_tokenize'));
$mform= new tokenization();
echo $OUTPUT->header();
if ($mform->is_cancelled()) {
//Handle form cancel operation, if cancel button is present on form
} else if ($fromform = $mform->get_data()) {
//In this case you process validated data. $mform->get_data() returns data posted in form.
$name = $mform->get_new_filename('userfile');
echo $name. '<br>';
$content = $mform->get_file_content('userfile');
//echo $content;
var_dump($content);
$morgot_link = "http://localhost/diplom/local/tokenize/morgot.py?someamountoftext=" . $content;
$morgot_data = file_get_contents($morgot_link);
echo $morgot_data;
} else {
// this branch is executed if the form is submitted but the data doesn't validate and the form should be redisplayed
// or on the first display of the form.
//displays the form
$mform->display();
}
echo $OUTPUT->footer();
Мой python CGI код:
#!C:\Users\HP\AppData\Local\Programs\Python\Python310-32\python.exe
import os
import urllib.parse
import nltk
query_dict = urllib.parse.parse_qs(os.environ['QUERY_STRING'])
input_something = str(query_dict['someamountoftext'])[2: -2]
def tknz_wrd(someamountoftext):
return(nltk.word_tokenize(someamountoftext))
print("Content-Type: text/html\n")
print (tknz_wrd(input_something))
morgot.py - Имя моего CGI python файла.
Дополнение: Я проверил ставится ли содержимое фала($content) в $morgot_link:
$morgot_link = "http://localhost/diplom/local/tokenize/morgot.py?someamountoftext=" . $content;
echo $morgot_link;
Да, вывод верный:
http://localhost/diplom/local/tokenize/morgot.py?someamountoftext=...........many text here.............
Это тем более наводит на мысль, что проблема в части "получить данные"($morgot_data = file_get_contents($morgot_link);
Также я не отрицаю, что могут быть какие-то ограничения\разрешения в Moodle на получение данных извне.