• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

teckV

DHTML e Forms Dinamicos

11 mensagens neste tópico

Neste post apresentam-se funcionalidades bastante interessantes de DHTML e forms dinamicos com PHP...

a ideia é criar um form com registos a partir de uma bd e poder selecionar alguns desses registos recorrendo a uma array dinamica de checkboxes...

os valores foram alterados por motivos obvios... qualquer duvida perguntem  :P

<<html>

<head>

<script type="text/javascript">

function checkAll(thisForm)

{

for (i = 0; i < thisForm.chkboxVul.length; i++)

{

thisForm.chkboxVul.checked=true

}

}

function uncheckAll(thisForm)

{

for (i = 0; i < thisForm.chkboxVul.length; i++)

{

thisForm.chkboxVul.checked=false

}

}

function preSubmit(thisForm) {

thisForm.vulnsSelected.value="";

for (i = 0; i < thisForm.chkboxVul.length; i++)

{

if (thisForm.chkboxVul.checked)

{

thisForm.vulnsSelected.value = thisForm.vulnsSelected.value + thisForm.chkboxVul.value +'##';

}

}

thisForm.submit();

}

</script>

</head>

<body>

<?

include_once('../config.php');

    function get_vuln_user(){

global $con;

$query = "SELECT dbo.historico.Hist_Vuln_maquina, dbo.historico.Hist_Vuln_ip, dbo.historico.Hist_Vuln_servico,

                      dbo.historico.Hist_Vuln_pluginid, dbo.historico.Hist_Vuln_plugin, dbo.historico.Hist_Vuln_hostareaSAV,

                      dbo.SEC_users.user_login

FROM dbo.SEC_areas_owners INNER JOIN

                      dbo.historico ON dbo.SEC_areas_owners.plataforma = dbo.historico.Hist_Vuln_hostareaSAV INNER JOIN

                      dbo.SEC_users ON dbo.SEC_areas_owners.id = dbo.SEC_users.id_area ";

$logUser = $_REQUEST['user'];

$vuln_get = $_REQUEST['vuln'];

$maq_get = $_REQUEST['maq'];

if (!empty($vuln_get))

$query = $query."WHERE (dbo.SEC_users.user_login = '".$logUser."' AND dbo.historico.Hist_Vuln_pluginid = '".$vuln_get."')";

elseif (!empty($maq_get))

$query = $query."WHERE (dbo.SEC_users.user_login = '".$logUser."' AND dbo.historico.Hist_Vuln_maquina = '".$maq_get."')";

else

$query = $query."WHERE (dbo.SEC_users.user_login = '".$logUser."')";

$result=mssql_query($query, $con);

$num=mssql_num_rows($result);

?>

<BODY text="#000000" link="#0000ff" alink="blue" vlink="#b22222">

<? include('header_owners.php'); ?><br>

<table border=0 cellspacing=0 cellpadding=0 bgcolor="#dddddd">

<tr bgcolor="#6487DB">

<td width="10%"><b>MÁQUINA</b></td><td width="25%"><b>PLUGIN</b></td>

<td width="5%"><b>IP</b></td><td width="20%"><b>SERVIÇO</b></td>

<td width="15%"<b>RAV CORREC</b></td><td width="15%"><b>RAV JUST</b></td>

</tr>

<form name="ownersForm"  action="formner.php" method="post">

<?

$i=0;

while ($i < $num) {

$maquina=mssql_result($result,$i,"Hist_Vuln_maquina");

$ip=mssql_result($result,$i,"Hist_Vuln_ip");

$servico=mssql_result($result,$i,"Hist_Vuln_servico");

$plugin=mssql_result($result,$i,"Hist_Vuln_plugin");

$pluginid=mssql_result($result,$i,"Hist_Vuln_pluginid");

$queryRav = "SELECT rav_comment, rav_correction, rav_id

FROM dbo.RAV WHERE (rav_id ='".$pluginid."')";

$resultRAV=mssql_query($queryRav, $con);

$numRav=mssql_num_rows($resultRAV);

if ($numRav <> 0) {

$rav_correction = mssql_result($resultRAV,0,"rav_correction");

$rav_comment = mssql_result($resultRAV,0,"rav_comment");

}

else {

$rav_correction = "Sem Rav";

$rav_comment = "Sem Rav";

}

?>

<tr>

<td><a href="vulner.php?maq=<?echo $maquina ?>&user=<?echo $logUser ?>"><?echo $maquina ?></a></td>

<td><INPUT name=chkboxVul type=checkbox value=<?echo $pluginid ?>#<?echo $maquina ?>#<?echo $logUser ?>>

<a href="vulner.php?vuln=<?echo $pluginid ?>&user=<?echo $logUser ?>"><?echo $plugin ?></a></td>

  <td><a href="formner.php?vuln=<?echo $pluginid ?>&maq=<?echo $maquina ?>&user=<?echo $logUser ?>"><?echo $ip ?></a></td>

<td><? echo $servico ?></td>

<td><TEXTAREA id=TEXTAREA1 name=TEXTAREA1 style="WIDTH: 100%"><? echo $rav_correction ?></TEXTAREA></td>

<td><TEXTAREA id=TEXTAREA1 name=TEXTAREA1 style="WIDTH: 100%"><? echo $rav_comment ?></TEXTAREA></td>

</tr>

<?

$i++;

}

?>

</table>

<br>

<table border=1 cellspacing=1 cellpadding=0 bgcolor="#a9a9a9" align="center">

<td width="50%" align="center">

<input type="button" value="Check" onclick="checkAll(this.form)">

<input type="button" value="Uncheck" onclick="uncheckAll(this.form)">

<input type="button" value="submit" onclick="preSubmit(this.form)">

</td>

<td width="50%" align="center">

<a href="javascript:history.back();">Voltar</a>

</td>

</table>

<INPUT TYPE="HIDDEN" NAME="vulnsSelected">

</form>

</body>

<?

}

get_vuln_user();

?></html>

:nono: :hmm: :smoke:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

<b><center>CORRECÇÃO DE VULNERABILIDADES</center></b><br>

<table border="0" cellspacing="0" cellpadding="4" width="100%" align="center" bgcolor="#ffffff">

     

<?

include_once('../config.php');

function update_hist_vuln() {

global $con;

$logUser = $_REQUEST['user'];

$vuln_get = $_REQUEST['vuln'];

$maq_get = $_REQUEST['maq'];

$sql= "UPDATE Hist_Vuln SET ".

                "Hist_Vuln_fpreason        = '" . str_replace("'","''", $vuln_get)        . "'," .

                "Hist_Vuln_justification        = '" . str_replace("'","''", $maq_get)        . "'," .

    " WHERE Hist_Vuln_maquina = '"  . $maq_get . "' AND dbo.historico.Hist_Vuln_pluginid = '".$vuln_get."' AND dbo.historico.Hist_Vuln_maquina = '".$maq_get."'";

             

if (mssql_query($sql, $con)) {

    return true;

        }

return false;

    }

function draw_Justifications() {

global $con;

$query_justif = "SELECT descricao

FROM dbo.SEC_justificacoes";

$result_justif=mssql_query($query_justif, $con);

$num_justif=mssql_num_rows($result_justif);

$i=0;

?>

<tr>

<td width="20%" align="right"></td>

<td width="5%" align="center"><b>Justificação:</b></td>

<td width="75%">

<select name="opt_corr">

<option value="Baixo">Seleccione a Justificação</option>

<?

while ($i < $num_justif) {

$valJus=mssql_result($result_justif,$i,"descricao");

echo "<option value=".$valJus.">".$valJus."</option>";

$i=$i+1;

}

?>

</select>

</td>

</tr>

<?

    }

function head_query() {

$qhead = "SELECT dbo.historico.Hist_Vuln_descricao, dbo.historico.Hist_Vuln_maquina, dbo.historico.Hist_Vuln_pluginid, dbo.historico.Hist_Vuln_ip,

            dbo.historico.Hist_Vuln_plugin, dbo.historico.Hist_Vuln_vuln_state, dbo.historico.Hist_Vuln_risco, dbo.historico.Hist_Vuln_estado, dbo.SEC_users.user_login, 

dbo.SEC_areas_owners.plataforma, dbo.SEC_areas_owners.id, dbo.SEC_users.id_area

FROM dbo.SEC_areas_owners INNER JOIN

dbo.historico ON dbo.SEC_areas_owners.plataforma = dbo.historico.Hist_Vuln_hostareaSAV INNER JOIN

dbo.SEC_users ON dbo.SEC_areas_owners.id = dbo.SEC_users.id_area ";

return $qhead;

    }

    function get_hist_vuln(){

global $con;

$vulsSelected = $_REQUEST['vulnsSelected'];

$logUser = $_REQUEST['user'];

$vuln_get = $_REQUEST['vuln'];

$maq_get = $_REQUEST['maq'];

if (empty($vuln_get) and empty($logUser) and empty($maq_get)) {

$vulns_all = split('##', $vulsSelected);

foreach ($vulns_all as $k => $val) {

$vulns_slice = split('#', $val);

foreach ($vulns_slice as $kk => $val2) {

$vuln_get = $vulns_slice[0];

$maq_get =  $vulns_slice[1];

$logUser =  $vulns_slice[2];

}

$query = head_query();

$query = $query."WHERE (dbo.SEC_users.user_login = '".$logUser."' AND dbo.historico.Hist_Vuln_maquina = '".$maq_get."' AND dbo.historico.Hist_Vuln_pluginid = '".$vuln_get."')";

$result=mssql_query($query, $con);

if (mssql_num_rows($result)!=0) {

$maquina=mssql_result($result,0,"Hist_Vuln_maquina");

$plugin=mssql_result($result,0,"Hist_Vuln_plugin");

$pluginid=mssql_result($result,0,"Hist_Vuln_pluginid");

?>

<tr>

<td width="20%" align="right"><? echo $maquina ?></td>

<td width="5%" align="center"><b>PlugIn:</b></td>

<td width="75%"><? echo $plugin ?></td>

</tr>

<?

        }

}

}

?>

<tr>

<td width="20%" align="right" bgcolor="#cccccc"></td>

<td width="5%" align="center" bgcolor="#cccccc"><b>Correcção</b></td>

<td width="75%" bgcolor="#cccccc"> </td>

</tr>

<tr>

<td width="20%" align="right"></td>

<td width="5%" align="center"><b>Estado:</b></td>

<td width="75%">

<select name="opt_jus">

<option value="Baixo">Seleccione o Estado</option>

<option value="Baixo" >Corrigido</option>

<option value="Médio" >Falso Positivo</option>

<option value="Alto"  >Vulnerável</option>

</select>

</td>

</tr>

<? draw_Justifications(); ?>

<tr>

<td width="20%" align="right"></td>

<td width="5%" align="center" valign="top"><b>Descrição Correcção Efectuada:</b></td>

<td width="75%"><textarea name="rav_solution" cols="70" rows="5"></textarea></td>

</tr>

</tbody>

</table>

<br>

<table border=1 cellspacing=1 cellpadding=0 bgcolor="#a9a9a9" align="center">

<td width=150 align="center">

<a href="javascript:history.back();">Confirmar</a>  

<a href="javascript:history.back();">Voltar</a>

</td>

</table>

<?

}

get_hist_vuln();

?>

:P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
include_once('../config.php');

isto tem mais que um ficheiro, certo?

este codigo todo é so dum ou de vários?

devias por tudo dentro dum quote de codigo;

do tipo:

<<html>
<head>
<script type="text/javascript">

function checkAll(thisForm)
{
for (i = 0; i < thisForm.chkboxVul.length; i++)
   {
   thisForm.chkboxVul.checked=true
   }
}

function uncheckAll(thisForm)
{
for (i = 0; i < thisForm.chkboxVul.length; i++)
   {
   thisForm.chkboxVul.checked=false
   }
}


function preSubmit(thisForm) {
   thisForm.vulnsSelected.value="";
   for (i = 0; i < thisForm.chkboxVul.length; i++)
   {
      if (thisForm.chkboxVul.checked)
         {
            thisForm.vulnsSelected.value = thisForm.vulnsSelected.value + thisForm.chkboxVul.value +'##';
         }
(...)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya... vou começar a colocar em quote de código.. é que faço isto no trabalho e o tempo para estar no site é curto, tipo sucapa...

a ideia de colocar código não é de criar programas completamente funcionais mas sim dar exemplos de diversas rotinas e estratégias para atingir diversos fins. Eu uso muito código na net como referencia e gostava que nesta comunidade começasse a ser possivel o mesmo.

o código apresentado são dois files de uma app completa desenvolvida por mim que não faz sentido colocar em posts...

já agora.. não acham interessante uma secção com código exemplo onde se pudessem descarregar apps completas e os seus componentes tipos scripts de bd, etc? Tenho muito código para disponibilizar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já agora.. não acham interessante uma secção com código exemplo onde se pudessem descarregar apps completas e os seus componentes tipos scripts de bd, etc? Tenho muito código para disponibilizar...

Já estão a criar um projecto para tal efeito.

http://www.portugal-a-programar.pt/index.php?showtopic=1431

Mas aqui no forum também é possivel colocares ficheiros.

Para isso tens de mandar um email aos administradores com os files.

Se não me engano é este o mail...

portugal-a-programar@gmail.com

Cumps

Pedantilva

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

porque é que usas $_REQUEST ? Idealmente devias usar $_POST, porque é isso que pretendes (ou $_COOKIE ou whatever, n li o código com mt atenção :)). Apesar disso n ser suficiente para verificar o input, sempre ajuda e torna o código + legível...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

esse código é uma snapshot de desenvolvimento, não um produto final e a ideia é para os novatos terem uma ideia de como as coisas funcionam e não estar a explicar a quem já sabe...

como sabem o $_POST recebe os valores passados pelo metodo post e só por POST... na fase de dev o código em cima recebia valor na querystring pelo metodo GET e outras vezes por POST... questões relacionadas com o fluxo de DEV...

usando o $_REQUEST temos acesso ao array de valores passados por POST, GET e tambem os COOKES

Resumo...

Se o valor for passado por GET usem o $_GET(var);

Se o valor for passado por POST usem o $_POST(var);

Para situações em que querem aceder a todos usem o $_REQUEST(var);

[move]VIVA A VICTORIA SECRETS - É A MELHOR AMIGA DO HOMEM[/move]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas! Eu quero fazer um guestbook mas preciso de ajuda :-[ To a usar uma tabela, na primeira linha fiz um formulario com um botao e queria que ao carregar nesse botao a mensagem ficava gravada na outra linha. Já vi que a mensagem fica gravada entre a tag <blockquote></blockquote> mas nao sei programar o botao :wallbash:

Se algum me poder dar uma ajudinha era porreiro

Cumps!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

oi tudo fix?

como sabem em ambientes web a arquitectura aplicacional divide-se em dois componentes Servidor e Cliente (pode-se conceptualmente dividir de outras formas mas agora é esta que interessa)

Quando se coloca um ficheiro PHP num servidor e ele é acedido remotamente por um cliente (browser tipo Internet Explorer) ele é intrepertado no servidor e cria código HTML para enviar para o Browser (o Browser é um intrepetador de HTML e não só. Recebe HTML e apresenta uma página conforme esse HTML que recebe do servidor web)

No principio isto era um processo estático, isto é, uma vez criada uma pagina HTML não se podia alterar no cliente e não era interactiva. O cliente apenas podia visualizar os resultados não podia interagir com os mesmos. Para haver interação tinha de se fazer um Post para o servidor com um pedido e o servidor interpetrava o PHP com a nova info e gerava uma nova página HTML. É um processo que requer muitas comunicações Cliente/Servidor tornando o processo lento e ineficaz.

Então surgiu o DHTML que é HTML Dinamico. Cria-se HTML que pode ser manipulado pelo Browser dando ao utilizador do Browser/cliente a possibilidade de interagir com os resultados apresentados no browser, tipo, o browser recebe 20 registos da bd mas só apresenta 10 e cria um botão em que o utilizador pode navegar entre registos sem ter que efefctuar um pedido ao servidor.

DHTML é muito bom para gerir o layout/apresentação de sites, gerindo a posição dos objectos (text, combobox, etc),  a sua visibilidade e os seus valores.

Pelo que percebi queres em DHTML alterar em client side o valor de um texto.. se for isso é simples... este caso uso um textbox podes adaptar para qualquer objecto

crias um código javaScript (ou vbscript) que vai ser processado pelo Browser. Client Script.

Usa-se esta TAG para indicar ao browser que é código Client Side a ser processado no Browser e não no servidor.

<script type="text/javascript">

[código DHTML client side]

</script>

Crias a função alteraTexto

<script type="text/javascript">

function alteraTexto(txtCampo)
{
    txtCampo.value="meuValor";
}

</script>

depois no HTML do objecto, neste caso um button, associas um evento, neste caso onclick, à função por ti criada...


<input type="button" onClick="alteraTexto(this.form.txtCampo)" value="Executar" />

e é tudo.. podes explorar e desenvolver melhor

saudações de um outro mundo...

:bye2:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora