# Cgi sono un po nel pallone

**URL:** <https://www.ruby-forum.com/t/cgi-sono-un-po-nel-pallone/104210>\
**Category:** IT\
**Created:** [May 15, 2007, 1:52pm UTC](https://www.ruby-forum.com/t/cgi-sono-un-po-nel-pallone/104210 "2007-05-15T13:52:46Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![sulfarom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/839c29/32.png) [@sulfarom](https://www.ruby-forum.com/u/sulfarom)\
**Post date:** [May 15, 2007, 1:52pm UTC](https://www.ruby-forum.com/t/cgi-sono-un-po-nel-pallone/104210/1 "2007-05-15T13:52:46Z")

</div>

Sicuramente manca qualcosa affinche’ questo cgi funzioni, non devo  
creare nuove pagine ne mandare a video alcunche’, devo solo riempire un  
database ldap con il contenuto dei campi di un form:

#!/usr/bin/ruby

require ‘file1’  
require ‘cgi’

cgi = CGI.new  
acnt = cgi.params  
acc=myLDAP.new  
acc.connetti  
acc.inserisci(acnt)

---

<div class="post-metadata">

**Author:** ![sulfarom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/839c29/32.png) [@sulfarom](https://www.ruby-forum.com/u/sulfarom)\
**Post date:** [May 15, 2007, 1:55pm UTC](https://www.ruby-forum.com/t/cgi-sono-un-po-nel-pallone/104210/2 "2007-05-15T13:55:49Z")

</div>

On mar, 2007-05-15 at 13:51 +0200, Mauro S. wrote:

> acnt = cgi.params  
> acc=myLDAP.new  
> acc.connetti  
> acc.inserisci(acnt)

i cgi devono sempre passare gli header altrimenti otterrai un internal  
server error

basta un:

puts “Content-type: text/plain”  
puts

(mi raccomando il secondo puts)

---

<div class="post-metadata">

**Author:** ![sulfarom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/839c29/32.png) [@sulfarom](https://www.ruby-forum.com/u/sulfarom)\
**Post date:** [May 16, 2007, 10:42am UTC](https://www.ruby-forum.com/t/cgi-sono-un-po-nel-pallone/104210/3 "2007-05-16T10:42:25Z")

</div>

Il giorno mar, 15/05/2007 alle 13.55 +0200, Roberto De Ioris ha scritto:

> > cgi = CGI.new
> 
> puts “Content-type: text/plain”  
> puts
> 
> (mi raccomando il secondo puts)

Ma nel caso si richiamino moduli esterni bisogna adottare particolari  
procedure?  
Mi spiego: il cgi e’ quello di cui sopra con l’aggiunta dei due comandi  
da te indicati, come vedi richiamo il modulo ‘file1’ nel quale e’  
definita la classe myLDAP.  
Il modulo e’ (scusate se posto il codice):

require ‘ldap’

class myLDAP

def initialize  
@base = “ou=People,dc=mydomain,dc=it”  
@admin = “cn=admin,dc=mydomain,dc=it”  
@passwd = “xxx”  
@conn = LDAP::Conn.new(“localhost”)  
@conn.set\_option(LDAP::LDAP\_OPT\_PROTOCOL\_VERSION, 3)  
@dominio = “@mydomain”  
end

def connetti  
@conn.bind(@admin, @passwd)  
end

def inserisci(account)  
newentry = {  
“objectClass”=\>  
[“top”,“person”,“organizationalPerson”,“inetOrgPerson”,“posixAccount”],  
“sn” =\> [account[“cognome”]],  
“cn” =\> [“#{account[“nome”]} #{account[“cognome”]}”],  
“mail” =\> [“#{account[“uid”]}#@dominio”],  
“homeDirectory” =\> [“/var/vmail/#{account[“uid”]}”],  
“uid” =\> [account[“uid”]],  
“userPassword” =\> [“{CRYPT}#{account[‘passwd’]}”],  
}  
@conn.add(“uid=#{account[‘uid’]},#@base”, newentry)  
end

def cerca

end

def elimina

end

end

quando lancio il cgi l’errore e’: /usr/lib/cgi-bin/ruby/accMail1.rb:4:in  
`initialize’: wrong argument type Array (expected String) (TypeError),  
referer: [http://localhost/prove/mail1LDAP.html](http://localhost/prove/mail1LDAP.html)

non capisco nel metodo initialize dove sia l’argomento errato  
considerando poi che se lancio il file file1.rb senza passare dal cgi  
tutto funziona regolarmente.

---

<div class="post-metadata">

**Author:** ![sulfarom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/839c29/32.png) [@sulfarom](https://www.ruby-forum.com/u/sulfarom)\
**Post date:** [May 16, 2007, 1:52pm UTC](https://www.ruby-forum.com/t/cgi-sono-un-po-nel-pallone/104210/4 "2007-05-16T13:52:11Z")

</div>

> Ma nel caso si richiamino moduli esterni bisogna adottare particolari  
> procedure?

Risolto grazie 🙂 l’ho detto che ero nel pallone…
