stanislav Posted May 2, 2022 Share Posted May 2, 2022 I installed Learning Managment System (LMS) 'Moodle' to XAMPP local server. And there is instrument for file downloading, called "filepicker". I want to pass text, received from 'filepicker' instrument (uploading .txt files only) from LMS Moodle to python-CGI script, process it, get the data back, and echo on a page. Using: OS - Windows 10. Local server: Apache/2.4.53 (Win64) OpenSSL/1.1.1n PHP/7.4.28 python 3.10.4 I made var_dump($content); of uploaded file, So it is definitely a string: string(828) "..........my text here............" Also I clearly know, that my CGI script work if i manually input data in it,like: http://localhost/speciallocation/local/tokenize/morgot.py?someamountoftext=Enter your text here Output: ['Enter', 'your', 'text', 'here'] But when I press submit button, I only get the name of my file, since I don't transmit it to CGI, but simply echo it. If just echo content of file, It also works. It brings me to think, that there is something wrong with send&get data part....... Any thoughts people? My php code: <?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(); My CGI python code: #!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 - the name of my CGI python file. Addition: I checked if the $content of file is being placed into $morgot_link: $morgot_link = "http://localhost/diplom/local/tokenize/morgot.py?someamountoftext=" . $content; echo $morgot_link; Yes, the output for this is correct: http://localhost/diplom/local/tokenize/morgot.py?someamountoftext=...........many text here............. It pushes me to think, that the problem is with receiving part (But I don't completely deny probability with sending part issue). Also I think there could be some kinds of restrictions\permissions in Moodle to recieve data like that. Sorry for bad English. Quote Link to comment https://forums.phpfreaks.com/topic/314754-php-python-sending-data-from-moodle-php-to-python-cgi-and-get-it-back/ Share on other sites More sharing options...
gw1500se Posted May 2, 2022 Share Posted May 2, 2022 You have to output a fully formed HTML page from your script. Meaning all the required tags for any HTML page (<HTML>, <HEAD>, <BODY>, etc.). Quote Link to comment https://forums.phpfreaks.com/topic/314754-php-python-sending-data-from-moodle-php-to-python-cgi-and-get-it-back/#findComment-1595883 Share on other sites More sharing options...
stanislav Posted May 4, 2022 Author Share Posted May 4, 2022 On 5/2/2022 at 10:24 PM, gw1500se said: You have to output a fully formed HTML page from your script. Meaning all the required tags for any HTML page (<HTML>, <HEAD>, <BODY>, etc.). Really? Daamn, I hope that's not the only solution. Cause I dont know how to do this in Moodle environment. Quote Link to comment https://forums.phpfreaks.com/topic/314754-php-python-sending-data-from-moodle-php-to-python-cgi-and-get-it-back/#findComment-1595920 Share on other sites More sharing options...
gw1500se Posted May 4, 2022 Share Posted May 4, 2022 It goes in your python code. Rather than just print the data, you need to also print the other HTML tags. Quote Link to comment https://forums.phpfreaks.com/topic/314754-php-python-sending-data-from-moodle-php-to-python-cgi-and-get-it-back/#findComment-1595935 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.