Чтение информации из текстового файла в CGI

У меня есть текстовый файл text1.txt который содержит:

username
password

Как я могу прочитать эти параметры из text1.txt в мой .cgi скрипт?

Я использую этот код:

f = open('text1.txt', "r") 
 user = f.readline() 
 pass = f.readline() 
$MAIN_AUTH = 'user':'pass' ;

Это не работает.

Если я напрямую вставляю пользователя и пропускаю это работает:

$MAIN_AUTH = 'username:password' ;

Но при чтении из текстового файла это не работает.

2 ответа

Общая логика, которую вы используете, почти в порядке, но синтаксис - нет, и есть некоторые детали. Потому что ты сказал линию $MAIN_AUTH = 'username:password'; работает, я полагаю, у вас есть код Perl. Начальные переменные с $ не допускается в Python (afaik).

  1. Всегда добавлять use strict; use warnings 'all'; в верхней части ваших скриптов Perl. Он сообщит вам о наиболее распространенных ошибках в вашем скрипте.
  2. Укажите полный путь к вашему входному файлу, потому что вы не можете быть уверены в текущем каталоге, когда ваш скрипт cgi запускается Apache (или кем бы то ни было), и сценарий будет ожидать его относительно этого рабочего каталога, если вы не укажете абсолютный путь,
  3. Проверьте код возврата open чтобы увидеть, сработало ли это.
  4. При чтении строки из файла строка все еще имеет символ новой строки в конце, поэтому удалите ее для дальнейшей обработки, применив chomp к каждой строке.

В целом я в конечном итоге с этим:

#!/usr/bin/env perl

use strict;
use warnings 'all';

open( my $fh, '<', '/path/to/text1.txt' ) or die "Cannot open file: $!\n";
my ($user, $pass) = (<$fh>, <$fh>);  # read first two lines
chomp($user, $pass);                 # strip off trailing "\n" from both
close($fh);

my $MAIN_AUTH = "$user:$pass";

print "'$MAIN_AUTH'\n";

Выход:

'username:password'

У вас будет перевод строки в конце двух переменных, если вы используете readline(),

Итак, если это Python, вам нужно будет позвонить rstrip() и если Perl, вам понадобится chomp(),

Другие вопросы по тегам