2010-12-14 77 views
-1

Je dois écrire un script en CGI qui est nouveau pour moi. J'essaie de faire sinon avec des numéros de condition commençant par 5 ou 6. Donc un code si le numéro commence par 5 et faire un autre si le nombre commence par 6.Je veux vérifier si le numéro commence par 4 ou 5 en CGI

+3

"CGI" n'est pas un langage, c'est un mécanisme. Dans quelle langue est le script? – skaffman

Répondre

1

Je ne pense pas que vous compreniez ce que CGI est. CGI est simplement un ensemble de variables d'environnement qui sont configurées par le serveur Web, et votre programme est exécuté avec eux. La sortie du programme devient la page Web. Donc, si vous voulez écrire un script CGI en Python, PHP, C, Assemblage, Whitespace ... tant qu'il peut être appelé et utiliser des variables d'environnement, ça va.

Donc, c'est vraiment une question de langue. Quelle langue utilisez-vous?

EDIT Vous avez spécifié Perl dans un commentaire à cette réponse. Je vous suggère de modifier la question.

Quel est votre numéro d'entrée? Le script Perl sera exécuté avec un chargement complet de variables d'environnement supplémentaires. Deux des plus importants sont QUERY_STRING et REQUEST_METHOD. CGI consiste en une spécification de ces variables d'environnement, de sorte que n'importe quel langage peut être utilisé pour écrire CGI.

Envisager perl_cgi.cgi?something=else. Le bit suivant le ? est le QUERY_STRING. Vous pouvez spécifier directement dans le cadre d'une ancre:

<a href="perl_cgi.cgi?something=else">Run with something equals else</a> 

ou dans le cadre d'une forme (un GET ou POST, par défaut GET):

<form action="perl_cgi.cgi" method="[GET or POST]"> 
    <input type="text" name="something" value="else"/> 
    <input type="submit" value="Submit!"/> 
</form> 

Cela exécutera votre programme avec le même chaîne de requête que ci-dessus (ou un paramètre différent, si la zone de texte est modifiée) mais REQUEST_METHOD sera soit GET ou POST selon.

Alors nous allons écrire un script CGI Perl pour imprimer le premier numéro de la chaîne que nous obtenons (nous ne passions cordes):

use CGI; 
$cgi=new CGI; 
$x=$cgi->param('x'); 
$firstnum=substr($x, 0, 1); 
print "Content-type: text/html\n\n"; 

print <<"EOF"; 
<html> 
<head> 
<title>My sample HTML page</title> 
</head> 
<body> 
<p>The first number of $x is $firstnum</p> 
</body> 
</html> 
EOF 

Cela suppose que ce programme est exécuté en tant que [program_name] x = [une chaîne de caractères]. C'est à vous de vous assurer que c'est le cas.

Cela devrait vous donner assez. Vous pouvez vérifier firstnum pour voir si son 5 ou 6, puis faire des choses différentes en fonction.

+0

Scripts CGI dans l'assemblage? Cela va avoir besoin de dévouement. P.S. Veuillez limiter ces demandes de clarification aux commentaires sur la question originale, plutôt que de les afficher comme réponses. – skaffman

+0

Je pense que je voulais dire Pearl puis – daron

+0

@skaffman - "Cependant, vous le faites dans la langue que vous utilisez" est la réponse à la question donnée. Je modifie ma réponse pour Perl. @daron - voir mon édition dans un instant – Robert

1
use 5.013; 
use warnings; 
use Scalar::Util qw(looks_like_number); 
use CGI; 

my $param = CGI->new()->param('some_example'); 

given (substr $param, 0, 1) { 
    when (! looks_like_number($_)) { say 'Not a number' } 
    when (5)      { say 'starts with 5' } 
    when (6)      { say 'starts with 6' } 
} 

Sinon, plutôt que d'utiliser substr pour obtenir la première lettre, et le changement mis param $ (5) à votre regex de choix.