The oninvalid HTML form input element event regarding Polling

RJM Programming - November, 2019

Favourite anything:

Favourite integer:

Favourite colour:

Favourite file:

Favourite email:

Favourite url:

Favourite date:

Favourite time:

Favourite month:

'; //function hex2dec //returns an associative array (keys: R,G,B) from a hex html code (e.g. #3FE5AA) function hex2dec($couleur = "#000000") { $R = substr($couleur, 1, 2); $rouge = hexdec($R); $V = substr($couleur, 3, 2); $vert = hexdec($V); $B = substr($couleur, 5, 2); $bleu = hexdec($B); $tbl_couleur = array(); $tbl_couleur['R']=$rouge; $tbl_couleur['G']=$vert; $tbl_couleur['B']=$bleu; return $tbl_couleur; } //conversion pixel -> millimeter in 72 dpi function px2mm($px) { return $px*25.4/72; } function txtentities($html) { $trans = get_html_translation_table(HTML_ENTITIES); $trans = array_flip($trans); return strtr($html, $trans); } //////////////////////////////////// class PDF extends FPDF { //variables of html parser protected $B; protected $I; protected $U; protected $HREF; protected $fontList; protected $issetfont; protected $issetcolor; function __construct($orientation='P', $unit='mm', $format='A4') { //Call parent constructor parent::__construct($orientation,$unit,$format); //Initialization $this->B=0; $this->I=0; $this->U=0; $this->HREF=''; $this->tableborder=0; $this->tdbegin=false; $this->tdwidth=0; $this->tdheight=0; $this->tdalign="L"; $this->tdbgcolor=false; $this->oldx=0; $this->oldy=0; $this->fontlist=array("arial","times","courier","helvetica","symbol"); $this->issetfont=false; $this->issetcolor=false; } ////////////////////////////////////// //html parser function WriteHTML($html) { $html=strip_tags($html,"



"); //remove all unsupported tags $html=str_replace("\n",'',$html); //replace carriage returns with spaces $html=str_replace("\t",'',$html); //replace carriage returns with spaces $a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE); //explode the string foreach($a as $i=>$e) { if($i%2==0) { //Text if($this->HREF) $this->PutLink($this->HREF,$e); elseif($this->tdbegin) { if(trim($e)!='' && $e!=" ") { $this->Cell($this->tdwidth,$this->tdheight,$e,$this->tableborder,'',$this->tdalign,$this->tdbgcolor); } elseif($e==" ") { $this->Cell($this->tdwidth,$this->tdheight,'',$this->tableborder,'',$this->tdalign,$this->tdbgcolor); } } else $this->Write(5,stripslashes(txtentities($e))); } else { //Tag if($e[0]=='/') $this->CloseTag(strtoupper(substr($e,1))); else { //Extract attributes $a2=explode(' ',$e); $tag=strtoupper(array_shift($a2)); $attr=array(); foreach($a2 as $v) { if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3)) $attr[strtoupper($a3[1])]=$a3[2]; } $this->OpenTag($tag,$attr); } } } } function OpenTag($tag, $attr) { //Opening tag switch($tag){ case 'SUP': if( !empty($attr['SUP']) ) { //Set current font to 6pt $this->SetFont('','',6); //Start 125cm plus width of cell to the right of left margin //Superscript "1" $this->Cell(2,2,$attr['SUP'],0,0,'L'); } break; case 'TABLE': // TABLE-BEGIN if( !empty($attr['BORDER']) ) $this->tableborder=$attr['BORDER']; else $this->tableborder=0; break; case 'TR': //TR-BEGIN break; case 'TD': // TD-BEGIN if( !empty($attr['WIDTH']) ) $this->tdwidth=($attr['WIDTH']/4); else $this->tdwidth=40; // Set to your own width if you need bigger fixed cells if( !empty($attr['HEIGHT']) ) $this->tdheight=($attr['HEIGHT']/6); else $this->tdheight=6; // Set to your own height if you need bigger fixed cells if( !empty($attr['ALIGN']) ) { $align=$attr['ALIGN']; if($align=='LEFT') $this->tdalign='L'; if($align=='CENTER') $this->tdalign='C'; if($align=='RIGHT') $this->tdalign='R'; } else $this->tdalign='L'; // Set to your own if( !empty($attr['BGCOLOR']) ) { $coul=hex2dec($attr['BGCOLOR']); $this->SetFillColor($coul['R'],$coul['G'],$coul['B']); $this->tdbgcolor=true; } $this->tdbegin=true; break; case 'HR': if( !empty($attr['WIDTH']) ) $Width = $attr['WIDTH']; else $Width = $this->w - $this->lMargin-$this->rMargin; $x = $this->GetX(); $y = $this->GetY(); $this->SetLineWidth(0.2); $this->Line($x,$y,$x+$Width,$y); $this->SetLineWidth(0.2); $this->Ln(1); break; case 'STRONG': $this->SetStyle('B',true); break; case 'EM': $this->SetStyle('I',true); break; case 'B': case 'I': case 'U': $this->SetStyle($tag,true); break; case 'A': $this->HREF=$attr['HREF']; break; case 'IMG': if(isset($attr['SRC']) && (isset($attr['WIDTH']) || isset($attr['HEIGHT']))) { if(!isset($attr['WIDTH'])) $attr['WIDTH'] = 0; if(!isset($attr['HEIGHT'])) $attr['HEIGHT'] = 0; $this->Image($attr['SRC'], $this->GetX(), $this->GetY(), px2mm($attr['WIDTH']), px2mm($attr['HEIGHT'])); } break; case 'BLOCKQUOTE': case 'BR': $this->Ln(5); break; case 'P': $this->Ln(10); break; case 'FONT': if (isset($attr['COLOR']) && $attr['COLOR']!='') { $coul=hex2dec($attr['COLOR']); $this->SetTextColor($coul['R'],$coul['G'],$coul['B']); $this->issetcolor=true; } if (isset($attr['FACE']) && in_array(strtolower($attr['FACE']), $this->fontlist)) { $this->SetFont(strtolower($attr['FACE'])); $this->issetfont=true; } if (isset($attr['FACE']) && in_array(strtolower($attr['FACE']), $this->fontlist) && isset($attr['SIZE']) && $attr['SIZE']!='') { $this->SetFont(strtolower($attr['FACE']),'',$attr['SIZE']); $this->issetfont=true; } break; } } function CloseTag($tag) { //Closing tag if($tag=='SUP') { } if($tag=='TD') { // TD-END $this->tdbegin=false; $this->tdwidth=0; $this->tdheight=0; $this->tdalign="L"; $this->tdbgcolor=false; } if($tag=='TR') { // TR-END $this->Ln(); } if($tag=='TABLE') { // TABLE-END $this->tableborder=0; } if($tag=='STRONG') $tag='B'; if($tag=='EM') $tag='I'; if($tag=='B' || $tag=='I' || $tag=='U') $this->SetStyle($tag,false); if($tag=='A') $this->HREF=''; if($tag=='FONT'){ if ($this->issetcolor==true) { $this->SetTextColor(0); } if ($this->issetfont) { $this->SetFont('arial'); $this->issetfont=false; } } } function SetStyle($tag, $enable) { //Modify style and select corresponding font $this->$tag+=($enable ? 1 : -1); $style=''; foreach(array('B','I','U') as $s) { if($this->$s>0) $style.=$s; } $this->SetFont('',$style); } function PutLink($URL, $txt) { //Put a hyperlink $this->SetTextColor(0,0,255); $this->SetStyle('U',true); $this->Write(5,$txt,$URL); $this->SetStyle('U',false); $this->SetTextColor(0); } } //end of class function addtotable($imgurl) { global $thtml, $pdf, $mw, $mh; $prefix=""; if (strpos(("~" . strtolower($imgurl)), "~http") === false) { if (!file_exists($prefix . $imgurl)) { if (isset($_GET['rp'])) { if (file_exists(str_replace('+',' ',urldecode($_GET['rp'])) . $imgurl)) { $prefix=str_replace('+',' ',urldecode($_GET['rp'])); } else if (file_exists("../" . str_replace('+',' ',urldecode($_GET['rp'])) . $imgurl)) { $prefix="../" . str_replace('+',' ',urldecode($_GET['rp'])); } } else if (isset($_POST['rp'])) { if (file_exists(str_replace('+',' ',urldecode($_POST['rp'])) . $imgurl)) { $prefix=str_replace('+',' ',urldecode($_POST['rp'])); } else if (file_exists("../" . str_replace('+',' ',urldecode($_POST['rp'])) . $imgurl)) { $prefix="../" . str_replace('+',' ',urldecode($_POST['rp'])); } } else if (file_exists("../" . $imgurl)) { $prefix="../"; } } } list($width, $height, $type, $attr) = getimagesize($prefix . $imgurl); if (!$pdf) { if ($width >= $height) { $pdf=new PDF('L'); $mw=MAX_L_WIDTH; $mh=MAX_L_HEIGHT; } else { $pdf=new PDF('P'); $mw=MAX_P_WIDTH; $mh=MAX_P_HEIGHT; } } if ($mw < $width && $mh >= $height) { $width=0; } else if ($mw >= $width && $mh < $height) { $height=0; } else if ($mw < $width && $mh < $height) { $width=-$mw; $height=-$mh; } if ($thtml == "") { $pdf->AddPage(); $pdf->SetFont('Arial','',12); if ($width == 0) { //echo "h"; //exit; $thtml.=''; } else if ($height == 0) { //echo "w"; //exit; $thtml.=''; } else if ($height < 0 && $width < 0) { //echo "hw"; //exit; $thtml.=''; } else { //echo "table " . $width . " vs " . $mw . " and " . $height . " vs " . $mh; //exit; $thtml.='
'; } $pdf->WriteHTML($thtml); // $thtml is some HTML table code collected earlier on $thtml=' '; } else { $pdf->AddPage(); $pdf->SetFont('Arial','',12); if ($width == 0) { $thtml.=''; } else if ($height == 0) { $thtml.=''; } else if ($height < 0 && $width < 0) { $thtml.=''; } else { $thtml='

'; } $pdf->WriteHTML($thtml); // $thtml is some HTML table code collected earlier on $thtml=' '; } } $pdf=null; $trow='cell 1cell 2'; $thtml='
'; $mw=MAX_P_WIDTH; $mh=MAX_P_HEIGHT; if (isset($_POST['formtable'])) { $thtml=str_replace('+', ' ', urldecode($_POST['formtable'])); } else if (isset($_GET['formtable'])) { $thtml=str_replace('+', ' ', urldecode($_GET['formtable'])); } else if (isset($_POST['slideshowlist'])) { $thtml=''; $slideshowlist=explode(",", str_replace('+', ' ', urldecode($_POST['slideshowlist']))); for ($ii=0; $ii var wo=null; var url=document.URL.split('#')[0].split('?')[0]; function relative_to_absolute(inth) { var huhs, posthuhs, ii, m, delimis=\" \"; var uubits=url.split(\"?\"); if (url == \"\") return inth; if (uubits[0].indexOf(\"/\") != -1) { var uuubits=uubits[0].split(\"/\"); if (uuubits[eval(uuubits.length - 1)] != \"\") { if (uuubits[eval(uuubits.length - 1)].indexOf(\".\") != -1) { uubits[0] = uubits[0].replace(\"/\" + uuubits[eval(uuubits.length - 1)], \"/\"); } else { uubits[0] += \"/\"; } } } var uudirname=uubits[0]; var outth = inth; var ideas = new Array(\" action='\", ' action=\"', \" Action='\", ' Action=\"', \" ACTION='\", ' ACTION=\"', \" action=\", \" Action=\", \" ACTION=\", \" href='\", ' href=\"', \" Href='\", ' Href=\"', \" HREF='\", ' HREF=\"', \" href=\", \" Href=\", \" HREF=\", \" src='\", ' src=\"', \" Src='\", ' Src=\"', \" SRC='\", ' SRC=\"', \" src=\", \" Src=\", \" SRC=\"); if (uudirname != \"\" && url != \"\") { for (m=0; m 1) { for (ii=eval(huhs.length - 1); ii>=1; ii--) { delimis=ideas[m].substring(eval(ideas[m].length - 1), eval(ideas[m].length)); if (delimis == \"=\") delimis=\" \"; posthuhs=huhs[ii].trim().replace(\">\",\" \").replace(/mailto:/g, \"http:\").replace(/javascript:none;/g, \"http:\").split(delimis); if (posthuhs[0].length > 0) { if (posthuhs[0].substring(0,1) == \"#\" || posthuhs[0].substring(0,4).toLowerCase().replace(/file/g, \"http\").toLowerCase() == \"http\") { outth = outth; } else if (posthuhs[0].substring(0,1) != \"/\" && posthuhs[0].substring(0,1) != \"'\" && posthuhs[0].substring(0,1) != '\"') { while (outth.indexOf(posthuhs[0]) != -1) { outth=outth.replace(posthuhs[0], \"youwill-never-ever-findthis\"); } outth=outth.replace(/youwill-never-ever-findthis/g, uudirname + posthuhs[0]).replace(/\/\.\//g, '/'); } else if (posthuhs[0].substring(1,2) != \"/\" && posthuhs[0].substring(0,1) != \"'\" && posthuhs[0].substring(0,1) != '\"') { while (outth.indexOf(posthuhs[0]) != -1) { outth=outth.replace(posthuhs[0], \"youwill-never-ever-findthis\"); } outth=outth.replace(/youwill-never-ever-findthis/g, uudirname.substring(0, eval(uudirname.length - 1)) + posthuhs[0]).replace(/\/\.\//g, '/'); } } } } } } return outth.replace(/\/\.\//g, '/'); } function woit() { if (wo) { wo.close(); wo=null; } wo=window.open('','_blank','top=50,left=50,width=500,height=500'); document.getElementById('formtable').innerHTML=relative_to_absolute(document.getElementById('formtable').value.replace(/\/g,'>')); document.getElementById('formtable').value=document.getElementById('formtable').innerHTML.replace(/\<\;/g,'<').replace(/\>\;/g,'>'); wo.document.write('
' + relative_to_absolute(document.getElementById('formtable').value) + ' ... is the look of ...
' + document.getElementById('formtable').outerHTML + '

'); } function emailit() { var tois=prompt('Email to?', ''); if (tois == null) { tois='';} if (tois.indexOf('@') != -1) { document.getElementById('formtable').innerHTML=relative_to_absolute(document.getElementById('formtable').value.replace(/\/g,'>')); document.getElementById('formtable').value=document.getElementById('formtable').innerHTML.replace(/\<\;/g,'<').replace(/\>\;/g,'>'); document.getElementById('eto').value=tois; document.getElementById('ebody').value=('
' + relative_to_absolute(document.getElementById('formtable').value) + ' ... is the look of ...
' + document.getElementById('formtable').outerHTML + '

'); document.getElementById('esubmit').click(); alert('Email sent to ' + tois); //document.getElementById('bsubmit').click(); } } function pollit() { document.getElementById('formtable').innerHTML=document.getElementById('tapoll').innerHTML; document.getElementById('formtable').value=document.getElementById('tapoll').value; setTimeout(emailit,500); } "; echo '' . $jscr . '

PDF Slideshow and Form Creation Helper

RJM Programming - October, 2019

Thanks to Fpdf



' . $otherbuttons . '

' . $ebutton . ''; exit; } foreach( $_GET as $name=>$val ) { } foreach( $_POST as $name=>$val ) { } if (!$pdf) { $pdf=new PDF(); } if ($pdf && trim($thtml) != "") { $pdf->AddPage(); $pdf->SetFont('Arial','',12); $pdf->WriteHTML($thtml); // $thtml is some HTML table code collected earlier on } if ($pdf) { header('Content-type: application/pdf'); $pdf->Output(); } exit; ?>