Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - n3fisto

#1
PHP / Guardar una imagen y su miniatura
17 Julio 2010, 06:46 AM
Hola como les va bueno queria mostrarles este Script el cual espero que a alguien le sirva lo use para un proyecto..

Antes de todo se debe de tener instalada la libreria GD,si no la tenemos activada solo tenemos que modificar el archivo php.ini que se encuentra en C:\Windows (puede variar según tu versión de Windows), y agregar la línea extension=php_gd2.dll en la sección "Dynamic Extensions". El archivo php_gd2.dll debe estar en la carpeta "extensions" dentro del directorio donde instalaste el php, por ejemplo "C:\php\extensions".


El formulario de upload y el script php está en una sola página, la nombré como subida.php:
Código (php) [Seleccionar]

<?php
// Verificamos que el formulario no ha sido enviado aun
$postback = (isset($_POST["enviar"])) ? true false;
if(
$postback){
  
// Nivel de errores
  
error_reporting(E_ALL);
  
// Constantes
  # Altura de el thumbnail en píxeles
  
define("ALTURA"100);
  
# Nombre del archivo temporal del thumbnail
  
define("NAMETHUMB""/tmp/thumbtemp"); //Esto en servidores Linux, en Windows podría ser:
// define("NAMETHUMB", "c:/windows/temp/thumbtemp"); y te olvidas de los problemas de permisos
  # Servidor de base de datos
  
define("DBHOST""localhost");
  
# nombre de la base de datos
  
define("DBNAME""test");
  
# Usuario de base de datos
  
define("DBUSER""root");
  
# Password de base de datos
  
define("DBPASSWORD""");
  
// Mime types permitidos
  
$mimetypes = array("image/jpeg""image/pjpeg""image/gif""image/png");
  
// Variables de la foto
  
$name $_FILES["foto"]["name"];
  
$type $_FILES["foto"]["type"];
  
$tmp_name $_FILES["foto"]["tmp_name"];
  
$size $_FILES["foto"]["size"];
  
// Verificamos si el archivo es una imagen válida
  
if(!in_array($type$mimetypes))
    die(
"El archivo que subiste no es una imagen válida");
  
// Creando el thumbnail
  
switch($type) {
    case 
$mimetypes[0]:
    case 
$mimetypes[1]:
      
$img imagecreatefromjpeg($tmp_name);
      break;
    case 
$mimetypes[2]:
      
$img imagecreatefromgif($tmp_name);
      break;
    case 
$mimetypes[3]:
      
$img imagecreatefrompng($tmp_name);
      break;
  }
  
$datos getimagesize($tmp_name);
  
$ratio = ($datos[1]/ALTURA);
  
$ancho round($datos[0]/$ratio);
  
$thumb imagecreatetruecolor($anchoALTURA);
  
imagecopyresized($thumb$img0000$anchoALTURA$datos[0], $datos[1]);
  switch(
$type) {
    case 
$mimetypes[0]:
    case 
$mimetypes[1]:
      
imagejpeg($thumbNAMETHUMB);
          break;
    case 
$mimetypes[2]:
      
imagegif($thumbNAMETHUMB);
      break;
    case 
$mimetypes[3]:
      
imagepng($thumbNAMETHUMB);
      break;
  }
  
// Extrae los contenidos de las fotos
  # contenido de la foto original
  
$fp fopen($tmp_name"rb");
  
$tfoto fread($fpfilesize($tmp_name));
  
$tfoto addslashes($tfoto);
  
fclose($fp);
  
# contenido del thumbnail
  
$fp fopen(NAMETHUMB"rb");
  
$tthumb fread($fpfilesize(NAMETHUMB));
  
$tthumb addslashes($tthumb);
  
fclose($fp);
  
// Borra archivos temporales si es que existen
  
@unlink($tmp_name);
  @
unlink(NAMETHUMB);
  
// Guardamos todo en la base de datos
  #nombre de la foto
  
$nombre $_POST["nombre"];
  
$link mysql_connect(DBHOSTDBUSERDBPASSWORD) or die(mysql_error($link));;
  
mysql_select_db(DBNAME$link) or die(mysql_error($link));
  
$sql "INSERT INTO tabla(nombre, foto, thumb, mime)
    VALUES
    ('
$nombre', '$tfoto', '$tthumb', '$type')";
  
mysql_query($sql$link) or die(mysql_error($link));
  echo 
"Fotos guardadas";
  exit();
}
?>



El Html

Código (php-brief) [Seleccionar]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Imagen a Blob</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form name="frmimage" id="frmimage" method="post"
        enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>">
        Nombre: <input type="text" id="nombre" name="nombre" /><br />
        Imagen: <input type="file" id="foto" name="foto" /><br />
        <input type="submit" name="enviar" id="enviar" value="Guardar" />
</form>
</body>
</html>


[code=sql]CREATE TABLE `tabla` (
  `idfoto` int(3) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(255) NOT NULL DEFAULT '',
  `foto` blob NOT NULL,
  `thumb` blob NOT NULL,
  `mime` varchar(40) NOT NULL DEFAULT '',
  PRIMARY KEY  (`idfoto`)
) ;



Según el tipo MIME de la imagen, crearemos la miniatura con las funciones imagecreatefromjpeg(), imagecreatefromgif()  o imagecreatefrompng().

La función imagecopyresized() crea la miniatura de la imagen, aunque también podemos utilizar imagecopyresampled().

Espero que  les sirva de algo......
Saludos

[/code]
#2
PHP / Una duda
10 Julio 2010, 23:29 PM
miren mii duda es esta :/

por que cuando hago esto, a las comillas ( "" ) les agrega un diagonal invertida ( \ )

$fp=fopen("$nombre.html","w");
fwrite($fp,$_POST['texto']);
fclose($fp)
me explique?
#3
Bases de Datos / Duda con Consulta Sql
1 Julio 2010, 01:57 AM
Hola como estan necesito una mega ayuda para un proyecto que realizo tengo que Mostrar el apellido de cada empleado, así como la fecha de contratación y la fecha de revisión de salario, que es el primer día lunes después de cada seis meses de servicio. Etiquete la columna REVIEW.

Formateo de las fechas para que aparezca en un formato similar a "Monday, the Thirty-First of July, 2000"


               
Last_Name        Hire_Date                                     Review
        King                      17-jun87       Monday, the Twenty-First of Dacember, 1987

#4
PHP / Ratproxy. Herramienta de auditoría web.
17 Junio 2010, 05:39 AM
Ratproxy es una aplicación elaborada y distribuida por Google bajo la Licencia Apache 2.0 que ayuda en el proceso de detección de errores, intrusiones o problemas en las web 2.0 que se desee (igual funciona para las que no son 2.0 pero está diseñada para eso). Esta herramienta funciona pasivamente analizando el tráfico generado entre el sitio analizado y el equipo donde la aplicación está corriendo. Obviamente es una herramienta importante para los desarrolladores web a fin de mantener sus sitios alejados de la manita caliente de algún hacker. Yo lo he estado probando en algunos sitios donde colaboro a veces y afortunadamente no me ha arrojado malos resultados.

Para poder utilizarlo es necesario descargarlo desde el sitio oficial. Ahora abrimos una terminal y vamos a la carpeta donde se haya descargado el archivo, ejecutamos
tar xvzf ratproxy-1.51.tar.gz
Con esto se descomprime la carpeta contenida dentro del archivo, ahora navegamos hasta ella y ejecutamos make para realizar la instalación de ratproxy.
cd ratproxy/
sudo make
Al finalizar la ejecución ya tendremos la aplicación lista para ser ejecutada.
./ratproxy -v /tmp/ -w log.txt -d elsitioaexplorar.com -lfscm

A partir de aquí ratproxy estará en modo escucha en el puerto 8080 de nuestro equipo, esperando por que el sitio donde estemos navegando coincida con elsitioaexplorar.com y vaciará los resultados de sus análisis a log.txt. Por lo tanto también es necesario que configuremos nuestro navegador para que tenga como proxy a 127.0.0.1 (localhost) en el puerto 8080. Aquí pongo una captura de esta configuración en el firefox.



Ahora simplemente navegamos al sitio de nuestro interés.

Como la línea para ejecutar ratproxy es muy larga hice un mini script bash para que simplemente introduzcamos como parámetro el sitio que deseamos explorar, si no especificamos un sitio ratproxy examinará todo lo que salga a su paso. El script tiene que ser copiado a un editor de textos y guardado en la misma carpeta que ratproxy, luego darle permisos de ejecución con:

chmod +x escuchar


Y ahora simplemente se ejecuta

./escuchar elsitioaexplorar.com


Así ya  no hay que aprenderse la pinche instrucción.
Si quieren ver los resultados del análisis en una página html en lugar de interpretar los resultados del txt ejecutamos
./ratproxy-report.sh log.txt > resultados.html


Script Bash
Citar
#!/bin/bash
echo $1
./ratproxy -v /tmp/ -w log.txt -d $1 -lfscm


#5
Hola como les va no se si recuerdan hace tiempo pregunte como implementar un algoritmo de firma digital bueno investigando pude terminar el programa y aqui les doy el source lo programe en C# 2010 aver espero sus comentarios.

Muy bien he terminado una aplicación en c# express 2010, este conjunto de aplicaciones fue implementado con el fin de entender mejor el uso de la firma electrónica.
La aplicación cuenta con ejemplos de:
Criptografía simétrica
      Data Encryption Standard (DES)
      Advanced Encryption Standard (AES)
Criptografía asimétrica
      Sistema criptográfico con clave pública (RSA)
      Digital Signature Algorithm (DSA)
Hasing
Firma electrónica


Descarga:

http://www.mediafire.com/?mmkzgolyjzz

Cualquier duda del Codigo me dicen





#6
Bueno miren estoy haciendo una auditoria de una web de servicio movil de mi pais y se me ocurrio hacer uso de un poco de los cat´s que es la guia 3 en Cobit e hice la revision de la web en W3C  y miren lo que me dio son 14 errores,y con respecto al css, 16 errores los cuales los pongo para conocimiento de todos abajo esta con lo que es hedra
W3C Markup Validation Service
[/color][/size]
W3C Markup Validation Service

Check the markup (HTML, XHTML, ...) of Web documents

    * Jump To:
    * Validation Output

Errors found while checking this document as XHTML 1.0 Transitional!
Result: 14 Errors
Address:
Encoding: iso-8859-1
Doctype: XHTML 1.0 Transitional
Root Element: html
Root Namespace: http://www.w3.org/1999/xhtml
Validators Donation Program LogoThe W3C validators rely on community support for hosting and development.
Donate and help us build better tools for a better web.
Options
Show Source Show Outline List Messages Sequentially Group Error Messages by Type
Validate error pages Verbose Output Clean up Markup with HTML Tidy

Help on the options is available.

↑ Top
Validation Output: 14 Errors

   1. Error Line 2, Column 74: syntax of attribute value does not conform to declared value

      <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="es" xml:lang="">

      ✉

      The value of an attribute contained something that is not allowed by the specified syntax for that type of attribute. For instance, the "selected" attribute must be either minimized as "selected" or spelled out in full as "selected="selected""; the variant "selected=""" is not allowed.
   2. Error Line 217, Column 125: required attribute "alt" not specified

      ...inclusiones/plantillas/006/images/PostHeaderIcon.png" width="29" height="29" />

      ✉

      The attribute given above is required for an element that you've used, but you have omitted it. For instance, in most HTML and XHTML document types the "type" attribute is required on the "script" element and the "alt" attribute is required for the "img" element.

      Typical values for type are type="text/css" for <style> and type="text/javascript" for <script>.
   3. Error Line 221, Column 142: document type does not allow element "link" here

      ...er.net/inclusiones/modulos/portada/style.css" type="text/css" media="screen" />

      ✉

      The element named above was found in a context where it is not allowed. This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section instead of inside "head" -- or two elements that overlap (which is not allowed).

      One common cause for this error is the use of XHTML syntax in HTML documents. Due to HTML's rules of implicitly closed elements, this error can create cascading effects. For instance, using XHTML's "self-closing" tags for "meta" and "link" in the "head" section of a HTML document may cause the parser to infer the end of the "head" section and the beginning of the "body" section (where "link" and "meta" are not allowed; hence the reported error).
   4. Error Line 695, Column 10: end tag for element "div" which is not open

          </div>

      ✉

      The Validator found an end tag for the above element, but that element is not currently open. This is often caused by a leftover end tag from an element that was removed during editing, or by an implicitly closed element (if you have an error related to an element being used where it is not allowed, this is almost certainly the case). In the latter case this error will disappear as soon as you fix the original problem.

      If this error occurred in a script section of your document, you should probably read this FAQ entry.
   5. Error Line 696, Column 9: end tag for element "div" which is not open

         </div>

      ✉

      The Validator found an end tag for the above element, but that element is not currently open. This is often caused by a leftover end tag from an element that was removed during editing, or by an implicitly closed element (if you have an error related to an element being used where it is not allowed, this is almost certainly the case). In the latter case this error will disappear as soon as you fix the original problem.

      If this error occurred in a script section of your document, you should probably read this FAQ entry.
   6. Error Line 699, Column 8: end tag for element "div" which is not open

        </div>

      ✉

      The Validator found an end tag for the above element, but that element is not currently open. This is often caused by a leftover end tag from an element that was removed during editing, or by an implicitly closed element (if you have an error related to an element being used where it is not allowed, this is almost certainly the case). In the latter case this error will disappear as soon as you fix the original problem.

      If this error occurred in a script section of your document, you should probably read this FAQ entry.
   7. Error Line 46, Column 64: attributes construct error

      ...><li><a href="http://www.elhacker.net/"class="active"><span><span>Portada</spa...

      ✉
   8. Error Line 46, Column 64: Couldn't find end of Start Tag a line 46

      ...><li><a href="http://www.elhacker.net/"class="active"><span><span>Portada</spa...

      ✉
   9. Error Line 46, Column 80: Opening and ending tag mismatch: li line 46 and a

      ...tp://www.elhacker.net/"class="active"><span><span>Portada</span></span></a></l...

      ✉
  10. Error Line 46, Column 80: Opening and ending tag mismatch: ul line 46 and li

      ...tp://www.elhacker.net/"class="active"><span><span>Portada</span></span></a></l...

      ✉
  11. Error Line 46, Column 80: Opening and ending tag mismatch: div line 45 and ul

      ...tp://www.elhacker.net/"class="active"><span><span>Portada</span></span></a></l...

      ✉
  12. Error Line 678, Column 11: Opening and ending tag mismatch: body line 28 and div

           </div>

      ✉
  13. Error Line 695, Column 10: Opening and ending tag mismatch: html line 2 and div

          </div>

      ✉
  14. Error Line 696, Column 3: Extra content at the end of the document

         </div>[/code
[size=10pt][color=red][center]Resultados del Validador CSS del W3C[/center][/color][/size]

[code]Resultados del Validador CSS del W3C para http://www.elhacker.net (CSS versión 2.1)
Disculpas! Hemos encontrado las siguientes errores (16)
URI : http://www.elhacker.net/inclusiones/plantillas/006/style.css
275 .logo Propiedad no válida : left Error de análisis sintáctico : {LogoLeft}px
276 .logo Propiedad no válida : top Error de análisis sintáctico : {LogoTop}px
277 .logo Propiedad no válida : width Error de análisis sintáctico : {LogoWidth}px
283 h1.logo-name Propiedad no válida : text-align Error de análisis sintáctico : {HorizontalAlign}
288 h1.logo-name, h1.logo-name a, h1.logo-name a:link, h1.logo-name a:visited, h1.logo-name a:hover Error de análisis sintáctico { {LogoNameFont}
291 Error de análisis sintáctico [:0; margin:0; color:]
291 Error de análisis sintáctico !important;
292 Error de análisis sintáctico }
297 .logo-text Propiedad no válida : text-align Error de análisis sintáctico : {HorizontalAlign}
302 .logo-text, .logo-text a Error de análisis sintáctico { {LogoSloganFont}
305 Error de análisis sintáctico [:0; margin:0; color:]
305 Error de análisis sintáctico !important;
306 Error de análisis sintáctico }
552 .artmenu ul a Propiedad no válida : border-color Error de análisis sintáctico : {PassiveBorderColor}
587 .artmenu ul li a:hover Propiedad no válida : border-color Error de análisis sintáctico : {HoveredBorderColor}
594 .artmenu ul li:hover > a Propiedad no válida : border-color Error de análisis sintáctico : {HoveredBorderColor}

↑ Top
HP LogoThe W3C validators are hosted on server technology donated by HP, and supported by community donations.
Donate and help us build better tools for a better web.
Información de CSS válida
body {
margin : 0 auto;
padding : 0;
background-color : #dbe5eb;
background-image : url('images/Page-BgTexture.jpg');
background-repeat : repeat;
background-attachment : scroll;
background-position : left top;
}
.Main {
position : absolute;
width : 100%;
left : 0;
top : 0;
}
.cleared {
float : none;
clear : both;
margin : 0;
padding : 0;
border : none;
font-size : 1px;
}
.Sheet {
overflow : hidden;
min-width : 35px;
min-height : 35px;
margin : 0 auto;
position : relative;
z-index : 0;
width : 1000px;
}
.Sheet-body {
position : relative;
z-index : 0;
margin : 13px;
}
.Sheet-tl {
position : absolute;
overflow : hidden;
z-index : -1;
top : 0;
left : 0;
width : 17px;
height : 17px;
background-image : url('images/Sheet-s.png');
}
.Sheet-tr {
position : absolute;
overflow : hidden;
z-index : -1;
top : 0;
right : 0;
width : 17px;
height : 17px;
}
.Sheet-tr div {
position : absolute;
z-index : -1;
top : 0;
left : -17px;
width : 34px;
height : 34px;
background-image : url('images/Sheet-s.png');
}
.Sheet-bl {
position : absolute;
overflow : hidden;
z-index : -1;
bottom : 0;
left : 0;
width : 17px;
height : 17px;
}
.Sheet-bl div {
position : absolute;
z-index : -1;
top : -17px;
left : 0;
width : 34px;
height : 34px;
background-image : url('images/Sheet-s.png');
}
.Sheet-br {
position : absolute;
overflow : hidden;
z-index : -1;
bottom : 0;
right : 0;
width : 17px;
height : 17px;
}
.Sheet-br div {
position : absolute;
z-index : -1;
top : -17px;
left : -17px;
width : 34px;
height : 34px;
background-image : url('images/Sheet-s.png');
}
.Sheet-tc {
position : absolute;
overflow : hidden;
z-index : -1;
top : 0;
left : 17px;
right : 17px;
height : 17px;
}
.Sheet-tc div {
position : absolute;
z-index : -1;
top : 0;
left : 0;
width : 100%;
height : 34px;
background-image : url('images/Sheet-h.png');
}
.Sheet-bc {
position : absolute;
overflow : hidden;
z-index : -1;
bottom : 0;
left : 17px;
right : 17px;
height : 17px;
}
.Sheet-bc div {
position : absolute;
z-index : -1;
top : -17px;
left : 0;
width : 100%;
height : 34px;
background-image : url('images/Sheet-h.png');
}
.Sheet-cl {
position : absolute;
overflow : hidden;
z-index : -1;
top : 17px;
left : 0;
width : 17px;
bottom : 17px;
}
.Sheet-cl div {
position : absolute;
z-index : -1;
top : 0;
left : 0;
width : 34px;
height : 100%;
background-image : url('images/Sheet-v.png');
}
.Sheet-cr {
position : absolute;
overflow : hidden;
z-index : -1;
top : 17px;
right : 0;
width : 17px;
bottom : 17px;
}
.Sheet-cr div {
position : absolute;
z-index : -1;
top : 0;
left : -17px;
width : 34px;
height : 100%;
background-image : url('images/Sheet-v.png');
}
.Sheet-cc {
position : absolute;
overflow : hidden;
z-index : -2;
top : 17px;
left : 17px;
right : 17px;
bottom : 17px;
background-image : url('images/Sheet-c.png');
}
.Sheet {
margin-top : -13px !important ;
}
div.Header {
margin : 0 auto;
position : relative;
z-index : 0;
width : 974px;
height : 125px;
}
div.Header-jpeg {
position : absolute;
z-index : -1;
top : 0;
left : 0;
width : 974px;
height : 125px;
background-image : url('images/Header.jpg');
background-repeat : no-repeat;
background-position : center center;
}
.logo {
display : block;
position : absolute;
}
h1.logo-name {
display : block;
}
.logo-text {
display : block;
}
.artmenu a, .artmenu a:link, .artmenu a:visited, .artmenu a:hover {
text-align : left;
text-decoration : none;
outline : none;
letter-spacing : normal;
word-spacing : normal;
}
.artmenu, .artmenu ul {
margin : 0;
padding : 0;
border : 0;
list-style-type : none;
display : block;
}
.artmenu li {
margin : 0;
padding : 0;
border : 0;
display : block;
float : left;
position : relative;
z-index : 5;
background : none;
}
.artmenu li:hover {
z-index : 10000;
white-space : normal;
}
.artmenu li li {
float : none;
}
.artmenu ul {
visibility : hidden;
position : absolute;
z-index : 10;
left : 0;
top : 0;
background : none;
}
.artmenu li:hover > ul {
visibility : visible;
top : 100%;
}
.artmenu li li:hover > ul {
top : 0;
left : 100%;
}
.artmenu:after, .artmenu ul:after {
content : ".";
height : 0;
display : block;
visibility : hidden;
overflow : hidden;
clear : both;
}
.artmenu, .artmenu ul {
min-height : 0;
}
.artmenu ul {
background-image : url(images/spacer.gif);
padding : 10px 30px 30px 30px;
margin : -10px 0 0 -30px;
}
.artmenu ul ul {
padding : 30px 30px 30px 10px;
margin : -30px 0 0 -10px;
}
.nav {
position : relative;
margin : 0 auto;
width : 974px;
height : 25px;
z-index : 100;
}
.artmenu {
padding : 0 0 0 0;
}
.nav .l, .nav .r, .nav .r div {
top : 0;
position : absolute;
z-index : -1;
overflow : hidden;
height : 25px;
}
.nav .l {
left : 0;
right : 0;
}
.nav .r {
right : 0;
width : 0;
}
.nav .r div {
width : 974px;
right : 0;
}
.nav .l, .nav .r div {
background-position : left top;
background-repeat : no-repeat;
background-image : url('images/nav.png');
}
.artmenu ul li {
clear : both;
}
.artmenu a, .artmenu a span {
height : 25px;
display : block;
}
.artmenu a {
cursor : pointer;
text-decoration : none;
margin-right : 0;
margin-left : 0;
}
.artmenu a span span {
font-family : Arial, Helvetica, Sans-Serif;
font-size : 12px;
font-style : normal;
font-weight : normal;
color : #ecf3f9;
padding : 0 12px;
margin : 0 0;
line-height : 25px;
text-align : center;
background-image : url('images/item-center.png');
background-position : left top;
background-repeat : repeat-x;
}
.artmenu a:hover span span {
color : #27333a;
background-position : left -25px;
}
.artmenu li:hover a span span {
color : #27333a;
background-position : left -25px;
}
.artmenu a.active span span {
color : #c3d4df;
background-position : left -50px;
}
.nav .separator {
display : block;
width : 2px;
height : 25px;
background-image : url('images/item-separator.png');
}
.artmenu ul a {
display : block;
text-align : center;
white-space : nowrap;
height : 21px;
width : 176px;
overflow : hidden;
line-height : 21px;
margin-right : auto;
background-image : url('images/subitem-bg.png');
background-position : left top;
background-repeat : repeat-x;
border-width : 0;
border-style : solid;
}
.nav ul.artmenu ul span, .nav ul.artmenu ul span span {
display : inline;
float : none;
margin : inherit;
padding : inherit;
background-image : none;
text-align : inherit;
text-decoration : inherit;
}
.artmenu ul a, .artmenu ul a:link, .artmenu ul a:visited, .artmenu ul a:hover, .artmenu ul a:active, .nav ul.artmenu ul span, .nav ul.artmenu ul span span {
text-align : left;
text-indent : 12px;
text-decoration : none;
line-height : 21px;
color : #214763;
font-family : Arial, Helvetica, Sans-Serif;
font-size : 12px;
font-style : normal;
font-weight : normal;
}
.artmenu ul ul a {
margin-left : auto;
}
.artmenu ul li a:hover {
color : #000000;
background-position : 0% -21px;
}
.artmenu ul li:hover > a {
color : #000000;
background-position : 0% -21px;
}
.nav .artmenu ul li a:hover span, .nav .artmenu ul li a:hover span span {
color : #000000;
}
.nav .artmenu ul li:hover > a span, .nav .artmenu ul li:hover > a span span {
color : #000000;
}
.contentLayout {
margin-bottom : 1px;
width : 974px;
position : relative;
}
.Block {
overflow : hidden;
min-width : 15px;
min-height : 15px;
margin : 0 auto;
position : relative;
z-index : 0;
}
.Block-body {
position : relative;
z-index : 0;
margin : 7px;
}
.Block-tl {
position : absolute;
overflow : hidden;
z-index : -1;
top : 0;
left : 0;
width : 7px;
height : 7px;
background-image : url('images/Block-s.png');
}
.Block-tr {
position : absolute;
overflow : hidden;
z-index : -1;
top : 0;
right : 0;
width : 7px;
height : 7px;
}
.Block-tr div {
position : absolute;
z-index : -1;
top : 0;
left : -7px;
width : 14px;
height : 14px;
background-image : url('images/Block-s.png');
}
.Block-bl {
position : absolute;
overflow : hidden;
z-index : -1;
bottom : 0;
left : 0;
width : 7px;
height : 7px;
}
.Block-bl div {
position : absolute;
z-index : -1;
top : -7px;
left : 0;
width : 14px;
height : 14px;
background-image : url('images/Block-s.png');
}
.Block-br {
position : absolute;
overflow : hidden;
z-index : -1;
bottom : 0;
right : 0;
width : 7px;
height : 7px;
}
.Block-br div {
position : absolute;
z-index : -1;
top : -7px;
left : -7px;
width : 14px;
height : 14px;
background-image : url('images/Block-s.png');
}
.Block-tc {
position : absolute;
overflow : hidden;
z-index : -1;
top : 0;
left : 7px;
right : 7px;
height : 7px;
}
.Block-tc div {
position : absolute;
z-index : -1;
top : 0;
left : 0;
width : 100%;
height : 14px;
background-image : url('images/Block-h.png');
}
.Block-bc {
position : absolute;
overflow : hidden;
z-index : -1;
bottom : 0;
left : 7px;
right : 7px;
height : 7px;
}
.Block-bc div {
position : absolute;
z-index : -1;
top : -7px;
left : 0;
width : 100%;
height : 14px;
background-image : url('images/Block-h.png');
}
.Block-cl {
position : absolute;
overflow : hidden;
z-index : -1;
top : 7px;
left : 0;
width : 7px;
bottom : 7px;
}
.Block-cl div {
position : absolute;
z-index : -1;
top : 0;
left : 0;
width : 14px;
height : 100%;
background-image : url('images/Block-v.png');
}
.Block-cr {
position : absolute;
overflow : hidden;
z-index : -1;
top : 7px;
right : 0;
width : 7px;
bottom : 7px;
}
.Block-cr div {
position : absolute;
z-index : -1;
top : 0;
left : -7px;
width : 14px;
height : 100%;
background-image : url('images/Block-v.png');
}
.Block-cc {
position : absolute;
overflow : hidden;
z-index : -2;
top : 7px;
left : 7px;
right : 7px;
bottom : 7px;
background-image : url('images/Block-c.png');
}
.Block {
margin : 7px;
}
.BlockHeader {
position : relative;
overflow : hidden;
height : 30px;
z-index : 0;
line-height : 30px;
padding : 0 7px;
margin-bottom : 7px;
}
.BlockHeader-text {
white-space : nowrap;
color : #000000;
font-family : Arial, Helvetica, Sans-Serif;
font-size : 12px;
font-style : normal;
font-weight : bold;
line-height : 30px;
}
.BlockHeader .l, .BlockHeader .r, .BlockHeader .r div {
top : 0;
position : absolute;
z-index : -1;
overflow : hidden;
height : 30px;
}
.BlockHeader .l {
left : 0;
right : 6px;
}
.BlockHeader .r {
right : 0;
width : 6px;
}
.BlockHeader .r div {
width : 994px;
right : 0;
}
.BlockHeader .l, .BlockHeader .r div {
background-position : left top;
background-repeat : no-repeat;
background-image : url('images/BlockHeader.png');
}
.header-tag-icon {
display : inline-block;
background-position : left top;
background-image : url('images/BlockHeaderIcon.png');
padding : 0 0 0 24px;
background-repeat : no-repeat;
min-height : 17px;
margin : 0 0 0 5px;
}
.BlockContent {
overflow : hidden;
min-width : 1px;
min-height : 1px;
margin : 0 auto;
position : relative;
z-index : 0;
}
.BlockContent-body {
position : relative;
z-index : 0;
margin : 8px;
}
.BlockContent-body {
color : #1d262a;
font-family : Arial, Helvetica, Sans-Serif;
font-size : 12px;
font-style : normal;
font-weight : normal;
}
.BlockContent-body a:link {
color : #29577a;
font-family : Arial, Helvetica, Sans-Serif;
text-decoration : underline;
}
.BlockContent-body a:visited, .BlockContent-body a.visited {
color : #29577a;
font-family : Arial, Helvetica, Sans-Serif;
text-decoration : underline;
}
.BlockContent-body a:hover, .BlockContent-body a.hover {
color : #3672a1;
font-family : Arial, Helvetica, Sans-Serif;
text-decoration : none;
}
.BlockContent-body ul {
list-style-type : none;
color : #4c6370;
margin : 0;
padding : 0;
}
.BlockContent-body li {
font-family : Arial, Helvetica, Sans-Serif;
font-size : 12px;
text-decoration : none;
}
.BlockContent-body ul li {
padding : 0 0 0 13px;
background-image : url('images/BlockContentBullets.png');
background-repeat : no-repeat;
margin : 0.5em 0 0.5em 0;
line-height : 1.2em;
}
.Post {
overflow : hidden;
min-width : 15px;
min-height : 15px;
margin : 0 auto;
position : relative;
z-index : 0;
}
.Post-body {
position : relative;
z-index : 0;
margin : 11px;
}
.Post-tl {
position : absolute;
overflow : hidden;
z-index : -1;
top : 0;
left : 0;
width : 7px;
height : 7px;
background-image : url('images/Post-s.png');
}
.Post-tr {
position : absolute;
overflow : hidden;
z-index : -1;
top : 0;
right : 0;
width : 7px;
height : 7px;
}
.Post-tr div {
position : absolute;
z-index : -1;
top : 0;
left : -7px;
width : 14px;
height : 14px;
background-image : url('images/Post-s.png');
}
.Post-bl {
position : absolute;
overflow : hidden;
z-index : -1;
bottom : 0;
left : 0;
width : 7px;
height : 7px;
}
.Post-bl div {
position : absolute;
z-index : -1;
top : -7px;
left : 0;
width : 14px;
height : 14px;
background-image : url('images/Post-s.png');
}
.Post-br {
position : absolute;
overflow : hidden;
z-index : -1;
bottom : 0;
right : 0;
width : 7px;
height : 7px;
}
.Post-br div {
position : absolute;
z-index : -1;
top : -7px;
left : -7px;
width : 14px;
height : 14px;
background-image : url('images/Post-s.png');
}
.Post-tc {
position : absolute;
overflow : hidden;
z-index : -1;
top : 0;
left : 7px;
right : 7px;
height : 7px;
}
.Post-tc div {
position : absolute;
z-index : -1;
top : 0;
left : 0;
width : 100%;
height : 14px;
background-image : url('images/Post-h.png');
}
.Post-bc {
position : absolute;
overflow : hidden;
z-index : -1;
bottom : 0;
left : 7px;
right : 7px;
height : 7px;
}
.Post-bc div {
position : absolute;
z-index : -1;
top : -7px;
left : 0;
width : 100%;
height : 14px;
background-image : url('images/Post-h.png');
}
.Post-cl {
position : absolute;
overflow : hidden;
z-index : -1;
top : 7px;
left : 0;
width : 7px;
bottom : 7px;
}
.Post-cl div {
position : absolute;
z-index : -1;
top : 0;
left : 0;
width : 14px;
height : 100%;
background-image : url('images/Post-v.png');
}
.Post-cr {
position : absolute;
overflow : hidden;
z-index : -1;
top : 7px;
right : 0;
width : 7px;
bottom : 7px;
}
.Post-cr div {
position : absolute;
z-index : -1;
top : 0;
left : -7px;
width : 14px;
height : 100%;
background-image : url('images/Post-v.png');
}
.Post-cc {
position : absolute;
overflow : hidden;
z-index : -2;
top : 7px;
left : 7px;
right : 7px;
bottom : 7px;
background-image : url('images/Post-c.png');
}
.Post {
margin : 10px;
}
a img {
border : 0;
}
.article img, img.article {
border-style : solid;
border-width : 1px;
border-color : #afc6d4;
margin : 1em;
}
.metadata-icons img {
border : none;
vertical-align : middle;
margin : 2px;
}
.article table, table.article {
border-collapse : collapse;
margin : 1px;
width : auto;
}
.article table, table.article .article tr, .article th, .article td {
background-color : transparent;
}
.article th, .article td {
padding : 2px;
border : 1px solid #608da9;
vertical-align : top;
text-align : left;
}
.article th {
text-align : center;
vertical-align : middle;
padding : 7px;
}
.PostHeaderIcon-wrapper {
text-decoration : none;
margin : 0.2em 0;
padding : 0;
font-weight : normal;
font-style : normal;
letter-spacing : normal;
word-spacing : normal;
font-variant : normal;
text-decoration : none;
font-variant : normal;
text-transform : none;
text-align : left;
text-indent : 0;
line-height : inherit;
font-family : Arial, Helvetica, Sans-Serif;
font-size : 22px;
font-style : normal;
font-weight : bold;
text-align : left;
color : #1c3c54;
}
.PostHeaderIcon-wrapper, .PostHeaderIcon-wrapper a, .PostHeaderIcon-wrapper a:link, .PostHeaderIcon-wrapper a:visited, .PostHeaderIcon-wrapper a:hover {
font-family : Arial, Helvetica, Sans-Serif;
font-size : 22px;
font-style : normal;
font-weight : bold;
text-align : left;
color : #1c3c54;
}
.PostHeaderIcon-wrapper img {
border : none;
vertical-align : middle;
margin : 0;
}
.PostHeader a:link {
font-family : Arial, Helvetica, Sans-Serif;
text-decoration : none;
text-align : left;
color : #224967;
}
.PostHeader a:visited, .PostHeader a.visited {
font-family : Arial, Helvetica, Sans-Serif;
text-decoration : none;
text-align : left;
color : #384852;
}
.PostHeader a:hover, .PostHeader a.hovered {
font-family : Arial, Helvetica, Sans-Serif;
text-decoration : none;
text-align : left;
color : #1b3950;
}
body {
font-family : Arial, Helvetica, Sans-Serif;
font-size : 12px;
font-style : normal;
font-weight : normal;
color : #3c4e58;
}
.PostContent {
font-family : Arial, Helvetica, Sans-Serif;
font-size : 12px;
font-style : normal;
font-weight : normal;
text-align : justify;
color : #3c4e58;
min-height : 500px;
}
a {
font-family : Arial, Helvetica, Sans-Serif;
text-decoration : underline;
color : #3672a1;
}
a:link {
font-family : Arial, Helvetica, Sans-Serif;
text-decoration : underline;
color : #3672a1;
}
a:visited, a.visited {
font-family : Arial, Helvetica, Sans-Serif;
text-decoration : underline;
color : #2b3840;
}
a:hover, a.hover {
font-family : Arial, Helvetica, Sans-Serif;
text-decoration : none;
color : #1b3950;
}
h1, h2, h3, h4, h5, h6, h1 a, h2 a, h3 a, h4 a, h5 a, h6 a h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited {
font-weight : normal;
font-style : normal;
text-decoration : none;
}
h1, h1 a, h1 a:link, h1 a:visited, h1 a:hover {
font-family : Arial, Helvetica, Sans-Serif;
font-size : 28px;
font-style : normal;
font-weight : bold;
text-align : left;
color : #29577a;
}
h2, h2 a, h2 a:link, h2 a:visited, h2 a:hover {
font-family : Arial, Helvetica, Sans-Serif;
font-size : 22px;
font-style : normal;
font-weight : bold;
text-align : left;
color : #29577a;
}
h3, h3 a, h3 a:link, h3 a:visited, h3 a:hover {
font-family : Arial, Helvetica, Sans-Serif;
font-size : 18px;
font-style : normal;
font-weight : bold;
text-align : left;
color : #39576a;
}
h4, h4 a, h4 a:link, h4 a:visited, h4 a:hover {
font-family : Arial, Helvetica, Sans-Serif;
font-size : 16px;
font-style : normal;
font-weight : bold;
text-align : left;
color : #1d262a;
}
h5, h5 a, h5 a:link, h5 a:visited, h5 a:hover {
font-family : Arial, Helvetica, Sans-Serif;
font-size : 14px;
font-style : normal;
font-weight : bold;
text-align : left;
color : #1d262a;
}
h6, h6 a, h6 a:link, h6 a:visited, h6 a:hover {
font-family : Arial, Helvetica, Sans-Serif;
font-size : 14px;
font-style : normal;
font-weight : bold;
text-align : left;
color : #1d262a;
}
ul {
list-style-type : none;
color : #0e1315;
margin : 0;
padding : 0;
}
li {
font-family : Arial, Helvetica, Sans-Serif;
font-size : 12px;
}
.Post ul li {
padding : 0 0 0 16px;
background-image : url('images/PostBullets.png');
background-repeat : no-repeat;
margin : 0.5em 0 0.5em 0;
line-height : 1.2em;
}
blockquote p {
color : #0b1014;
font-family : Arial, Helvetica, Sans-Serif;
font-style : italic;
font-weight : normal;
text-align : left;
}
blockquote {
border-color : #afc6d4;
border-width : 1px;
border-style : solid;
margin : 10px 10px 10px 50px;
padding : 5px 5px 5px 41px;
background-color : #d4e0e8;
background-image : url('images/PostQuote.png');
background-position : left top;
background-repeat : no-repeat;
}
button.Button, a.Button {
position : relative;
display : inline-block;
width : auto;
outline : none;
border : none;
background : none;
line-height : 34px;
margin : 0;
padding : 0;
overflow : visible;
cursor : default;
text-decoration : none !important ;
}
*:first-child + html button.Button, *:first-child + html a.Button {
display : list-item;
list-style-type : none;
float : left;
}
.Button .btn {
position : relative;
overflow : hidden;
display : block;
width : auto;
z-index : 0;
height : 34px;
color : #224967;
white-space : nowrap;
float : left;
}
.Button .t {
height : 34px;
white-space : normal;
padding : 0 21px;
font-family : Arial, Helvetica, Sans-Serif;
font-size : 12px;
font-style : normal;
font-weight : normal;
text-align : left;
line-height : 34px;
text-decoration : none !important ;
}
input, select {
font-family : Arial, Helvetica, Sans-Serif;
font-size : 12px;
font-style : normal;
font-weight : normal;
}
.Button .active {
color : #f0f3f5;
}
.Button .hover, a.Button:hover {
color : #eef3f6;
text-decoration : none !important ;
}
.Button .active .r {
top : -68px;
}
.Button .hover .r {
top : -34px;
}
.Button .r {
display : block;
position : absolute;
overflow : hidden;
z-index : -1;
top : 0;
right : 0;
width : 11px;
height : 102px;
}
.Button .r span {
display : block;
position : absolute;
overflow : hidden;
z-index : -1;
top : 0;
right : 0;
width : 411px;
height : 102px;
}
.Button .active .l {
top : -68px;
}
.Button .hover .l {
top : -34px;
}
.Button .l {
display : block;
position : absolute;
overflow : hidden;
z-index : -1;
top : 0;
left : 0;
right : 11px;
height : 102px;
}
.Button .l, .Button .r span {
background-image : url('images/Button.png');
}
.Footer {
position : relative;
z-index : 0;
overflow : hidden;
width : 974px;
margin : 5px auto 0 auto;
}
.Footer .Footer-inner {
height : 1%;
position : relative;
z-index : 0;
padding : 8px;
text-align : center;
}
.Footer .Footer-background {
position : absolute;
z-index : -1;
background-repeat : no-repeat;
background-image : url('images/Footer.png');
width : 974px;
height : 100px;
bottom : 0;
left : 0;
}
.rss-tag-icon {
position : relative;
display : block;
float : left;
background-image : url('images/rssIcon.png');
background-position : right center;
background-repeat : no-repeat;
margin : 0 5px 0 0;
height : 32px;
width : 32px;
}
.Footer .Footer-text p {
margin : 0;
}
.Footer .Footer-text {
display : inline-block;
color : #1a364d;
font-family : Arial, Helvetica, Sans-Serif;
font-size : 11px;
}
.Footer .Footer-text a:link {
text-decoration : none;
color : #265273;
font-family : Arial, Helvetica, Sans-Serif;
text-decoration : underline;
}
.Footer .Footer-text a:visited {
text-decoration : none;
color : #536b79;
font-family : Arial, Helvetica, Sans-Serif;
text-decoration : underline;
}
.Footer .Footer-text a:hover {
text-decoration : none;
color : #336d99;
font-family : Arial, Helvetica, Sans-Serif;
text-decoration : none;
}
.page-footer, .page-footer a, .page-footer a:link, .page-footer a:visited, .page-footer a:hover {
font-family : Arial;
font-size : 10px;
letter-spacing : normal;
word-spacing : normal;
font-style : normal;
font-weight : normal;
text-decoration : underline;
color : #7daed4;
}
.page-footer {
margin : 1em;
text-align : center;
text-decoration : none;
color : #98adb9;
}
.contentLayout .sidebar1 {
position : relative;
margin : 0;
padding : 0;
border : 0;
float : left;
overflow : hidden;
width : 191px;
}
.contentLayout .content {
position : relative;
margin : 0;
padding : 0;
border : 0;
float : left;
overflow : hidden;
width : 585px;
}
.Novedades {
display : inline-block;
background-position : left top;
background-image : url('novedades.png');
padding : 0 0 0 24px;
background-repeat : no-repeat;
min-height : 17px;
margin : 0 0 0 5px;
}
.Noticias {
display : inline-block;
background-position : left top;
background-image : url('noticias.png');
padding : 0 0 0 24px;
background-repeat : no-repeat;
min-height : 17px;
margin : 0 0 0 5px;
}
.Rss {
display : inline-block;
background-position : left top;
background-image : url('rss.png');
padding : 0 0 0 24px;
background-repeat : no-repeat;
min-height : 17px;
margin : 0 0 0 5px;
}
.novedad {
font-size : 12px;
}

HERA

Aviso. Tenga en cuenta, al revisar cada punto, que los scripts pueden generar contenidos dinámicos que merecen las mismas consideraciones que los contenidos estáticos.
Hera. Sumario

    * URL: http://www.elhacker.net
    * Fecha/hora: 15/06/2010 - 7:43 GMT
    * Total: 630 elementos
    * Análisis automático: 2 segundos
    * Errores: 10 errores
    * A verificar manualmente: 40 puntos
    * Revisor: (desconocido)
    * Navegador: Mozilla Firefox 3.6.3 (Windows XP)

[/code]
#7
Desarrollo Web / Auditoria Web - Estandares
13 Junio 2010, 18:22 PM


Bueno como estan esta es la primera vez que escribo algo tan grande como lo que hare, espero criticas constructivas como destructivas.

(NOTA? Post en Construccion..... )
1. INTRODUCCIÓN
2. AUDITORÍA DE ACCESIBILIDAD WEB. DESIGN FOR ALL (Para todos)
2.1. Auditoría de accesibilidad
2.2. Auditoría de usabilidad
3. LEGISLACIÓN SOBRE ACCESIBILIDAD
4. VENTAJAS DE LA ACCESIBILIDAD
5. WAI, INICIATIVA DE ACCESIBILIDAD A LA WEB
6. ACCESO WEB PARA DISCAPACITADOS
4.1. Clasificación de las discapacidades
7. PROBLEMAS TÉCNICOS DEL ACCESO WEB
8. AUDITORÍA DE ACCESIBILIDAD WEB
8.1. La revisión preliminar.
8.2. Evaluación de la accesibilidad conforme a las pautas WAI (WCAG 1.0)
8.3. Monitorización constante
9. GLOSARIO

1. INTRODUCCIÓN

"El poder de la Web está en su universalidad. El acceso de todo el mundo con
independencia de su discapacidad es un aspecto esencial."

CitarTim Berners-Lee Creador de la "World Wide Web" (www)

La accesibilidad busca la igualdad de acceso a la web para todas las personas,
para afianzar la universalidad de la WWW.
Una página web accesible se presenta tanto al usuario medio de la www como a
los grupos minoritarios de personas que sufren distintos tipos de discapacidades y
para los que no todas las páginas web están pensadas, pero también a los grupos
minoritarios de usuarios que no tienen el software más avanzado ni ayudas
técnicas que muchos sitios web requieren para su correcta visualización y
lectura.
En definitiva, tomar medidas para asegurar la accesibilidad a una página web
permitiría a un conjunto creciente de personas formar parte de la sociedad de la
información.
Una página o sitio web es accesible cuando está diseñado y codificado de forma
que sus contenidos y servicios estén disponibles para cualquier persona, con
independencia de su contexto de navegación.

2. AUDITORÍA DE ACCESIBILIDAD WEB. DESIGN FOR ALL

Para que todos se puedan beneficiar de Internet existe el referente internacional
de las pautas WAI (siglas de la Web Accessibility Initiative), que permiten
alcanzar diferentes grados de accesibilidad en un sitio web.
El servicio de consultoría de accesibilidad web de adaptación al Design for All
consta de dos partes que se integran en un solo estudio: por un lado, auditar una
web existente o supervisar un desarrollo para cumplir las pautas de accesibilidad
WCAG 1.0 establecidas por la WAI. Por otro lado, auditar una web existente o
supervisar un desarrollo para aplicar las directrices de usabilidad establecidas por
Jakob Nielsen y otros expertos reconocidos internacionalmente.

2.1. AUDITORÍA DE ACCESIBILIDAD

El servicio de auditoría de accesibilidad está diseñada para que su web pueda ser
visitada por usuarios discapacitados y sea correctamente visualizada en diferentes
soportes: teléfonos móviles, PDA, ordenadores... De esta manera su web cumplirá
la legislación establecida sobre accesibilidad web en la Ley 34/2002, relativa a
Servicios de la Sociedad de la Información y Comercio Electrónico (LSSICE).
La auditoría de accesibilidad consta de las siguientes fases:

- Estudio del estado de accesibilidad de su web.

- Generación de un informe del estado actual.

- Supervisión de los cambios y monitorización constante.



2.2. AUDITORÍA DE USABILIDAD


Gracias a la auditoría de usabilidad podrá ayudar a sus visitantes a encontrar lo
que buscan de manera rápida y eficiente en su web. El servicio de auditoría de
accesibilidad que ofrecemos consta de las siguientes fases o etapas:

- Revisión inicial de la usabilidad.

- Evaluación de usabilidad: Permite descubrir los problemas que sus
visitantes pueden estar encontrando al utilizar su web.

- Diseño orientado al usuario (User-centered design).

- Optimización web.

3. LEGISLACIÓN SOBRE ACCESIBILIDAD

3.1. LEGISLACIÓN EUROPEA

La Comisión Europea junto con el Consejo Europeo esta promoviendo el
desarrollo de una Internet accesible para todos, con la Iniciativa eEurope. Esta
iniciativa se puso en marcha en diciembre de 1999 y uno de sus objetivos
fundamentales es garantizar una sociedad de la información para todos, sin
exclusiones.
Dentro de su plan de acción, se pretende que las administraciones públicas de los
estados miembros mejoren el nivel de accesibilidad en sus páginas. Asimismo las
organizaciones que reciban fondos públicos deberán hacer que sus sitios web
sean accesibles, considerando que un sitio web es accesible siempre que satisfaga
el nivel doble A y que se aplique en su totalidad la prioridad 2 de las pautas WAI.

3.2. LEGISLACIÓN ESPAÑOLA

España ha adoptado las directivas comunitarias con la Ley 34/2002, relativa a
Servicios de la Sociedad de la Información y Comercio Electrónico (LSSICE), en la
que se establece que "las Administraciones Públicas adoptarán las medidas
necesarias para que la información disponible en sus respectivas páginas de
Internet pueda ser accesible a personas con discapacidad y de edad avanzada de
acuerdo a los criterios de accesibilidad al contenido generalmente reconocidos
antes del 31 de diciembre de 2005".
Además esta ley obliga a todas aquellas empresas que aspiren a contratos o
convenios con organismos públicos, a tener en cuenta que con la entrada en
vigor de la ley, se podrá "exigir que las páginas de Internet cuyo diseño o
mantenimiento financien, apliquen los criterios de accesibilidad".


4. VENTAJAS DE LA ACCESIBILIDAD

La accesibilidad web no sólo permite ampliar de forma radical el público de los
sitios web, además, al cumplirse las pautas de accesibilidad, las web se adecuan
a los estándares, lo que las hace más rápidas y de mejor acceso.
Directamente relacionado con la accesibilidad, se enumeran otras acciones que
pueden contribuir a mejorar el posicionamiento del sitio web en buscadores, esto
es, el lugar por importancia en que los buscadores colocan a los sitios webs al
hacer una búsqueda.
Además, al cumplir con los estándares todo trabajo ulterior en la web se
simplifica y así un rediseño, un cambio, una modificación se hace más rápido y
por tanto menos costoso.
Las páginas serán más accesibles. Los motores automatizados de los buscadores
(robots) podrán acceder a todo el contenido del sitio web mejorando su
calificación. Los archivos son menos pesados con lo que será menor el tiempo
de descarga, menor el consumo de ancho de banda y menor espacio en el
servidor.
Un mismo documento puede adoptar diseños radicalmente distintos en diferentes
aparatos, pudiendo incluso escogerse entre varios diseños para un mismo medio.

5. WAI, INICIATIVA DE ACCESIBILIDAD A LA WEB

La Iniciativa de Accesibilidad a la Web (WAI) del W3C (World Wide Web
Consortium) fue fundada en 1997, recibe el apoyo de los principales actores de la
industria y los gobiernos del mundo, se dedica a promover soluciones de
accesibilidad en la web para personas con discapacidades. Esta iniciativa trabaja
en definitiva para el desarrollo del potencial de la web.
La WAI actúa principalmente sobre cinco áreas de trabajo:

- Asegurar que las tecnologías web den soporte a la accesibilidad

- Desarrollo de pautas de accesibilidad

- Creación de herramientas de evaluación y corrección de la accesibilidad
   web

- Desarrollo de materiales para la educación y difusión

- Coordinación de proyectos de investigación y desarrollo
La WAI ha propuesto para cada una de estas necesidades unas pautas a seguir: La
propuesta de la WAI sobre la accesibilidad de contenidos, se recoge en las Pautas
de Accesibilidad de Contenidos Web, WCAG 1.0. La primera recomendación fue
en 1999 y actualmente se esta desarrollando la versión 2.0 de estas pautas.
Son las pautas establecidas a través de esta iniciativa en las que nos basamos a la
hora de revisar y evaluar la accesibilidad de las páginas web.


6. ACCESO WEB PARA DISCAPACITADOS

Al hablar de accesibilidad se presupone que ésta está dirigida al grupo de los
discapacitados, pero no únicamente a ellos.
La accesibilidad no sólo afecta a los discapacitados, sino a un gran número de
usuarios, que quedan apartados de gran número de páginas web que no están
preparadas o pensadas para llegar a ellos.

6.1. CLASIFICACIÓN DE LAS DISCAPACIDADES

La clasificación propuesta por la WAI (Web Accessibility Initiative) agrupa las
discapacidades en función de cómo afectan al acceso a un ordenador y en
definitiva como afectan al uso de la web.
La clasificación engloba la ceguera, la baja visión, la falta de sensibilidad a los
colores, sordera, sordera severa, discapacidad motora y las discapacidades
cognitivas y neurológicas, teniendo en cuenta que cada tipo de discapacidad
tiene asociados una serie de problemas para acceder a los contenidos web.
Sin embargo, no sólo las personas mencionadas anteriormente tienen problemas
de acceso a la web.
Aunque no se consideren discapacitadas, algunas personas pueden tener
limitaciones de funcionalidad sensorial, física o cognitiva que afectan a su acceso
a la web. Estas incluyen situaciones relacionadas con lesiones (por ejemplo una
persona con una fractura que reduzca la movilidad de un brazo) o con el
envejecimiento, y por su duración en el tiempo, pueden ser crónicas o
transitorias.

En el caso de lesiones puntuales, se podría beneficiar de los diseños accesibles
que faciliten la navegación por teclado así como otras pautas relacionadas con la
discapacidad motora.

El número y la severidad de las limitaciones tienden a aumentar con la edad, y
pueden incluir alteraciones en la visión, oído, memoria o funcionalidad motriz,
por lo que tomar medidas que mejoren la accesibilidad de los sitios web,
permitirían a un conjunto cada vez mayor de personas mayores formar parte de la
sociedad de la información.
Esto incrementa el número de personas con problemas de acceso a la web
exponencialmente, ya que el porcentaje de la población que abarca a las
personas de mediana edad y de edad avanzada es creciente.
Es por eso que la necesidad de implementar la accesibilidad en los sitios web no
es no sólo una mejora social, sino una inversión dado el público potencial que
apreciará los esfuerzos por hacer una web accesible.

7. PROBLEMAS TÉCNICOS DEL ACCESO WEB

También existen unas limitaciones relacionadas con los equipos de acceso a
Internet. Muchos de los usuarios que se conectan a la red de Internet lo hacen
mediante conexiones lentas u ordenadores antiguos.
Hoy en día el acceso a Internet se puede realizar desde distintos lugares,
cybercafés, salas comunes, bibliotecas, redes wifi en aeropuertos, etcétera. Esto
puede dificultar e incluso imposibilitar el acceso a webs con contenidos pesados,
o contenidos que requieran de determinadas herramientas.
Pero también la accesibilidad se refiere a el acceso al contenido de las páginas
desde diferentes dispositivos como PDA o teléfonos móviles.
Además muchos usuarios eligen libremente bloquear determinado tipo de
contenido por razones de seguridad, y, de este modo, muchas webs se les
presentan prácticamente vacías.

8. AUDITORÍA DE ACCESIBILIDAD WEB

La evaluación de la accesibilidad web consta de diversas etapas, y cada etapa
tiene distintos objetivos:

1. Una revisión preliminar, para identificar las barreras de acceso
generales al sitio web.

2. La evaluación de la accesibilidad conforme con las pautas de la WAI
que trata de:
       
       a. Detectar problemas importantes de accesibilidad durante la fase
           de desarrollo.

       b. Determinar el nivel de conformidad respecto a la WACG 1.0
           (Web Content Accesibility Guide o pautas de acceso) de un sitio
           web existente.

3. Tras una revisión de la conformidad de un sitio a las normas de la WAI,
una monitorización constante del sitio ayuda a asegurar que
permanecerá con dicho nivel de conformidad en el futuro.

En cada una de estas etapas se llevará a cabo una revisión para garantizar que los
resultados son correctos. Se validarán de forma manual un subconjunto
representativo de las páginas que permitan detectar problemas de usabilidad,
navegación, contenidos de apoyo incompletos, etc.
En la siguiente ilustración se resume a modo gráfico el proceso de auditoría de
accesibilidad para un sitio web.

8.1. LA REVISIÓN PRELIMINAR

Esto ayuda a identificar rápidamente el alcance de los problemas de accesibilidad
de un sitio web, aunque su ámbito es general, y no puede usarse para determinar
niveles de conformidad.

Este punto requiere del uso combinado de técnicas manuales sobre las páginas
como el uso de herramientas semi-automatizadas de chequeo de accesibilidad.
La revisión preliminar de un sitio consta de tres pasos:

1. Seleccionar una muestra de las páginas del sitio web. Debe incluir las
páginas con más acceso por parte del usuario (página inicial, etc.).


Especial observación requieren las páginas donde el contenido es
generado dinámicamente.

2. Uso de diferente software para la revisión general y evaluación de la
accesibilidad.

3. Resumen de los resultados, de los tipos de problemas encontrados, así
como las buenas formas a seguir o a ampliar en el sitio y recomendación
de los pasos a seguir.

8.2. EVALUACIÓN DE LA ACCESIBILIDAD CONFORME A LAS PAUTAS WAI (WCAG
1.0)

Esta evaluación de la accesibilidad combina evaluaciones y pruebas con los
usuarios con discapacidad.

1. Identificar el nivel de conformidad de accesibilidad que se quiere
comprobar en el sitio web objeto de la evaluación:
   
     a. Identificar el nivel de adecuación de la WAI que se quiere
         comprobar.

     b. Identificar una selección de páginas del sitio para los tests
         manuales y de usuario que incluya al menos una de las diferentes
         páginas que conformen el sitio, y de todas las páginas con más
         visitas por parte de los usuarios.

    c. Identificar todas las páginas del sitio web para la evaluación.

2. Realizar evaluaciones:

    a. Validación el lenguaje de marcas, incluyendo la sintaxis y las
        hojas de estilo sobre la selección de páginas obtenida en el punto
        anterior.

    b. Uso de herramientas de evaluación de la accesibilidad en la
        selección de páginas del sitio web, indicando las incidencias
        detectadas.

3. Realizar evaluaciones manuales:
    a. Examinar la selección de páginas del sitio para confirmar que
        cumple todos los puntos de verificación del nivel de adecuación
        que se quiere comprobar.

    b. Examinar la selección de páginas con un navegador gráfico,
         jugando con las posibles configuraciones y haciendo especial
         hincapié en los siguientes aspectos: diferentes navegadores;
         diferentes versiones; diferentes plataformas, haciendo las
         diferentes comprobaciones, de la misma forma en que se hicieron
         en la revisión preliminar.
    c. Usar un navegador de voz y un navegador de texto,
         profundizando en la revisión.

   d. Lectura de las páginas, confirmando que el lenguaje usado en
       ellas es claro, sencillo y apropiado para el propósito de la página.

4. Tests de usabilidad de las características de accesibilidad
implementadas. Se realizarán pruebas con personas con diferentes
discapacidades, diferente nivel de experiencia técnica y diferente grado de
familiaridad con el sitio web.

5. Resumen y propuesta de soluciones:

     a. Resumen de cualquier problema y posible mejora encontrados       
         para cada tipo de página o URL concreta.

    b. Recomendaciones de acciones de mejora, para la reparación de
        las barreras de accesibilidad encontradas mediante el proceso de
        evaluación del nivel de adecuación, propuestas para posibles
        mejoras en la accesibilidad y para el mantenimiento continuo y
        monitorización del sitio.

8.3. MONITORIZACIÓN CONSTANTE

Para garantizar que un sitio web mantendrá su nivel de adecuación de
accesibilidad en el futuro, deberán tenerse en cuenta los siguientes apuntes:

- Clara definición del nivel de conformidad esperado.

- Clara identificación de los individuos responsables de la monitorización
  del sitio, y procedimientos rápidos que puedan usar para devolver una
  página web a su estado accesible, en caso de que éste se pierda.

- Especificaciones claras sobre la frecuencia, método y ámbito de las
  evaluaciones.

- Procedimientos para la validación y evaluación de los nuevos tipos de
  página que se vayan a añadir o que se hayan modificado, antes de
  subirlas al sitio web.

- Incorporación en el sitio web de direcciones para el feed-back sobre la
  accesibilidad del sitio.







9. GLOSARIO

A continuación se detallan algunos de los términos relacionados con
accesibilidad a los que se hace referencia en cualquiera de los epígrafes de este
documento.

- Accesibilidad. Separar forma y contenido permite hacer llegar la
  información a diferentes dispositivos, navegadores, lectores de pantalla...
  Posibilitando en buena medida el acceso a personas con discapacidad.

- Ancho de banda. Para sitios con muchas visitas trabajar con estándares
  puede representar un ahorro muy grande. Reduciendo costes con el envío
  de información innecesaria al usuario. Páginas construidas con XHTML y
  CSS pueden llegar a reducir un 50% el tamaño de la página original.

- Tiempos de carga. Menos código hace que las páginas tarden menos en
   cargar mejorando la experiencia de usuario. La cualidad más apreciada
   por los usuarios en un site es la velocidad de descarga. Un usuario medio
   tarda 10 segundos en perder la atención en la máquina.

- Buscadores. Una página diseñada con estándares aparecerá en mejor
  posición en los resultados de búsqueda debido a que el código es más
  limpio, las páginas sólo llevan contenido (no diseño), semánticamente es
  más correcto. La accesibilidad está ligada al posicionamiento en
  buscadores, quee navegan como si fuesen "ciegos".

- Independencia del dispositivo. El uso de estándares facilita el acceso al
  contenido de las páginas Web a través de diferentes navegadores y
  dispositivos. Por lo tanto el mismo sitio Web puede usarse tanto en un
  teléfono móvil como en el PC, TV, impresora... cambiando sólo un
  archivo (CSS). Utilizar estándares puede significar llegar al 100% de los
  usuarios que visitan la red.

- Mantenimiento. Al separar estructura y presentación se permite realizar
  cambios en todo el sitio editando un único archivo. Cuando se requiera un
  cambio de aspecto, tiempo y coste serán muy reducidos. No es necesario
  hacer modificaciones en las páginas desarrolladas ni cambiar contenido
  del sitio.

- Control por parte del usuario. El usuario del sitio tiene el control sobre la
  página, independientemente del dispositivo con el que se conecte. La
  personalización de su navegador le será útil para visitar el sitio. El usuario
  puede modificar a su antojo tamaños de letra, colores, botones...

- Adaptación al futuro. Los Navegadores se están adaptando a los
  estándares, de esta forma se garantiza la viabilidad de los proyectos a largo
  plazo. Un sitio web adaptado es compatible con el 99% de los
  navegadores y, si se usa bien, sirve para cualquier plataforma. Un sitio
  desarrollado con estándares utiliza una tecnología fácilmente compatible
  con otros productos.


Validar Accesibilidad Web Online
A continuación muestro algunas de las herramientas online más usadas para validar la accesibilidad web, estos validadores de la accesibilidad web  evalúan todos y cada uno de los elementos y páginas que las componen de forma automátizada e informan de si se encuentran errores y qué puntos de verificación de las pautas deben ser revisados manualmente.

Validar Accesibilidad Web Online


   

 
   

La accesibilidad web se encuentra estrechamente ligada con el cumplimiento de los estándares web de la W3C, de este modo recomiendo validar en un primer momento el cumplimiento de estos estándares (ver artículo Validar XHTML y CSS) y una vez cumplidos pasar a la validación de la accesibilidad web de nuestros sitios.


Bueno esto es todo si falta algo o modifico solo diganme para poder corregirlo y mejorarlo gracias.

Fuente: Internet.
            Posteriormente pondre las fuentes por ahora no porque tengo que organizarlo gracias
#8
PHP / Ayuda con catalogo web!
11 Junio 2010, 18:12 PM

Bueno miren estoy implementando una web con un catalogo virtual, y al realizarla me tope con el siguiente problema me aparece el siguiente error, lo revise y no te que falta o sobra una llave lo revise y nada, aver si alguien me ayuda a encontrarlo gracias..
Parse error: parse error in C:\wamp\www\sistema-catalogo\index.php  on line 273


El codigo del index.php

Código (php) [Seleccionar]

<?php
//Carga de datos de Conexion
require("conexion.php");


//Conexion a base de Datos SQL
$link;
mysql_select_db($sql_database);

//Buscando informacion del sistema de forma General
$buscando_infoweb mysql_query("select * FROM infoweb where id_infoweb=1");
$infoweb mysql_fetch_array($buscando_infoweb);

//Buscando informacion de la EMPRESA
$buscando_empresa mysql_query("select * FROM empresa where id_empresa=1");
$empresa mysql_fetch_array($buscando_empresa);

//CAPTURA DEL FORMULARIO
$form_categoria $_POST['form_categoria'];
$form_producto $_POST['form_producto'];

if(
$form_categoria == "si"){
$enviado "no";
}else{
$enviado "si";
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $infoweb['titulo']; ?></title>
<link href="catalogo.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div class="texto_blanco" id="cuerpo_superior">
<span class="titulo_superior"><?php echo $empresa['nombre']; ?></span><br />
<?php echo $infoweb['titulo']." V.".$infoweb['version'].".0"?><br />
<br />
<?php 
//informacion de la emrpsa
echo $empresa['direccion']."<br>"
echo 
"Telefono: ".$empresa['telefono']."<br>";
echo 
"Fax: ".$empresa['fax']."<br>";
echo 
$empresa['mail']."<br>";
?>


<br />
</div>
<div class="texto_blanco" id="cuerpo_info">
  <table width="100%" border="0" cellspacing="0" cellpadding="2">
    <tr>
      <td width="5%"><img src="imagenes/usuarios.jpg" width="16" height="16" /></td>
      <td width="42%">
<?php
//Sistema de Contador
include("sist_contador.php");
?>
</td>
      <td width="47%">
        <div align="right">
          <?php
//Sistema de Contador
echo date("d-m-Y");
?>

      </div></td>
      <td width="1%">&nbsp;</td>
      <td width="5%"><div align="right"><img src="imagenes/calendar02.gif" alt="" width="16" height="16" /></div></td>
    </tr>
  </table>
</div>
<div id="cuerpo_general">
<div class="texto_Negro" id="cuerpo_interior">
  <form id="form1" name="form1" method="post" action="index.php"><div align="center">
    <table width="100%" border="0" cellspacing="0" cellpadding="4">

        <tr>
          <td colspan="2"><div align="left"><strong>BUSQUEDA DE PRODUCTOS</strong></div></td>
          <td>&nbsp;</td>
          <td><div align="left"><strong>Informacion General</strong></div></td>
        </tr>
        <tr>
          <td width="16%"><div align="left">Categoria</div></td>
          <td width="28%"><label>
            <div align="left">
              <table width="100%" border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td width="72%"><select name="form_categoria" class="texto_Negro" id="form_categoria">
                    <option value="si" >Ofertas</option>
                    <?php
//Visulizando el listado del personal
$buscando_cetegorias mysql_query("select * FROM categorias order by nombre asc");
while($categorias mysql_fetch_array($buscando_cetegorias)){
?>

                    <option value="<?php echo $categorias['id_categorias']; ?>" ><?php echo $categorias['nombre']; ?></option>
                    <?php
}
?>

                  </select></td>
                  <td width="28%"><div align="center"><img src="imagenes/serch.gif" width="14" height="14" /></div></td>
                </tr>
              </table>
            </div>
          </label></td>
          <td width="4%">&nbsp;</td>
          <td width="52%" rowspan="3" align="left" valign="top"><div align="left">En este sistema usted podra encontrar cualquier informaicon de nuestros productos ofrecidos por nuestra emrpesa.</div></td>
        </tr>
        <tr>
          <td><div align="left">Producto</div></td>
          <td><div align="left">
            <label>
            <input name="form_producto" type="text" class="texto_Negro" id="form_producto" size="16" />
            </label>
          </div></td>
          <td>&nbsp;</td>
          </tr>
        <tr>
          <td colspan="2"><div align="right">
            <input name="enviado" type="hidden" id="enviado" value="si" />
            <input name="button" type="submit" class="texto_Negro" id="button" value="Buscar" />
          </div></td>
          <td>&nbsp;</td>
          </tr>
      </table>
    </div>
  </form>
  </div>
<?php
if($enviado == 'si'){
?>

<table width="408" border="1" cellpadding="4" cellspacing="0" bordercolor="#CCCCCC">
  <tr>
    <td>Busqueda de Productos</td>
  </tr>
</table>

<br />
<?
//Cuerpo BUSQUEDA
$buscando_productos = mysql_query("select * FROM productos where nombre like '%$form_producto%' and categoria_id like '%$form_categoria%' order by precio asc");
while($productos = mysql_fetch_array($buscando_productos)){
?>
<table width="408" border="1" cellpadding="4" cellspacing="0" bordercolor="#CCCCCC">
  <tr>
    <td width="29%">
   
     
        <?php 
if(
$productos['mime'] == ""){?>

    <div align="center">
      Sin Imagen
      </div>
        <?php
}else{
?>

        <img src="<?php echo "ver.php?id_imagen=$productos[idproductos]"?>">
        <?php
}
?>

       
       
      </td>
    <td width="71%"><p>    <span class="texto_MiniTitulo"><strong>Producto: <?php echo $productos['nombre']; ?></strong></span><br />
    Categoria:
<?php
$buscando_cetegorias2 mysql_query("select * FROM categorias where id_categorias = '$productos[categoria_id]'");
$categorias2 mysql_fetch_array($buscando_cetegorias2);
if($categorias2['nombre'] == ""){
echo "Categoria Eliminada";
}else{
echo $categorias2['nombre']; 
}
?>

          <br />
        Informacion: <?php echo $productos['info']; ?><br />
        <span class="texto_verde"><strong>
       <?php 
  if(
$productos['precio'] != 0){
  echo "Precio: $ ".$productos['precio']; 
  }
  if($productos['precio'] != && $productos['cantidad'] != 0){
  echo " - ";
  }
  if($productos['cantidad'] != 0){
  echo "Cantidad: ".$productos['cantidad']; 
  }
  ?>
</strong></span></p>
      </td>
  </tr>
</table>
<br />
<?
}


}else{
?>
<table width="408" border="1" cellpadding="4" cellspacing="0" bordercolor="#CCCCCC">
  <tr>
    <td>Ofertas de Productos</td>
  </tr>
</table>

<br />
<?php
//Busqueda de productos
$buscando_productos mysql_query("select * FROM productos where oferta like '1' and nombre like '%$form_producto%' order by precio asc");
while(
$productos mysql_fetch_array($buscando_productos)){
?>


<table width="408" border="1" cellpadding="4" cellspacing="0" bordercolor="#CCCCCC">
  <tr>
    <td width="29%">
   
        <?php 
if(
$productos['mime'] == ""){?>

    <div align="center">
      Sin Imagen
      </div>
        <?php
}else{
?>

        <img src="<?php echo "ver.php?id_imagen=$productos[idproductos]"?>">
        <?php
}
?>

   
    </td>
    <td width="71%"><p>    <span class="texto_MiniTitulo"><strong>Producto: <?php echo $productos['nombre']; ?></strong></span><br />
    Categoria:
        <?php
$buscando_cetegorias2 mysql_query("select * FROM categorias where id_categorias = '$productos[categoria_id]'");
$categorias2 mysql_fetch_array($buscando_cetegorias2);
if($categorias2['nombre'] == ""){
echo "Categoria Eliminada";
}else{
echo $categorias2['nombre']; 
}
?>

          <br />
        Informacion: <?php echo $productos['info']; ?><br />
        <span class="texto_verde">
        <strong>
        <?php 
  if(
$productos['precio'] != 0){
  echo "Precio: $ ".$productos['precio']; 
  }
  if($productos['precio'] != && $productos['cantidad'] != 0){
  echo " - ";
  }
  if($productos['cantidad'] != 0){
  echo "Cantidad: ".$productos['cantidad']; 
  }
  ?>

        </strong></span></p>
      </td>
  </tr>
</table>
<br />
<?
}//fin busqueda de productos


}
?>
<br />
</div>
<?php
mysql_close
($link);
?>
}
</body>
</html>
#9
Hola como estan miren tengo una duda como puedo hacer un software que pueda hacer certificados y firmas digitales.
Hasta lo que se deberia de usar.

PROTOCOLOS DE CERTIFICACIÓN

   *

     SET (Secure Electronic Transaction)
   *

     PGP (Enterprice Security)
   *

     SSL (Secure Socket Layout)

Mi duda es la siguiente si se crea un chat con ssl usando un a encriptacion estaria validado ?¿?¿?

Edito : Solucionado el problema lo hice y postee la solucion saludos

http://foro.elhacker.net/vbnet/source_firma_digital_c_2010-t296750.0.html
#10
Código (vb) [Seleccionar]

Private Sub Command2_Click()
End
End Sub

Private Sub Form_Load()
Skin1.LoadSkin App.Path & "\skins\Droid.skn" 'cargando el skin para el fondo
Skin1.ApplySkin hWnd 'aplicando el skin
End Sub


Private Sub SkinLabel3_DragDrop(Source As Control, x As Single, y As Single)

End Sub

Private Sub Start_Click()
'En este punto como puedo hacer para llamar a un ejecutable que tengo ya hecho.
'el cual se llama simulacion.exe
End Sub


Bueno mi problema es que no puedo llamar o mejor dicho no se como hacer para llamar a un exe revisando pude darle la pinta de un skin pero el otro no me ubico porfavor
#11
PHP / Laberinto en Php.
17 Marzo 2010, 16:21 PM
Hola como estan miren hice un post anteriormente el cual era de hacer un laberinto y poner al lobo y  caperucita. El lObo tiene que ir detras de caperucita Roja mas o menos lo tengo avanzado por el momento le s mostrare el codigo.
Y la duda con la que estoy

Código (php) [Seleccionar]
<?php 

//Array que devolverá el laberinto 
$array = array( 
    array(
1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1), 
    array(
1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1), 
    array(
1,0,1,0,1,1,1,1,0,1,1,1,1,1,0,1,0,0,1,0,1,0,0,1), 
    array(
1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,1,0,1,1,1,0,1,1), 
    array(
1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1), 
    array(
1,0,0,0,0,0,0,1,0,1,1,1,0,1,0,1,1,0,1,0,1,0,0,1), 
    array(
1,1,1,0,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1), 
    array(
1,0,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1), 
    array(
1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,1), 
    array(
1,0,1,0,1,0,1,1,1,1,1,1,0,1,0,1,0,0,1,0,1,0,0,1), 
    array(
1,0,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1), 
    array(
1,0,1,0,1,0,1,1,1,1,1,0,1,1,0,0,0,1,0,0,1,0,0,1), 
    array(
1,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,0,1,1), 
    array(
1,0,1,0,0,0,0,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,1), 
    array(
1,0,1,1,1,0,0,1,0,0,1,0,0,1,0,1,1,1,1,0,1,1,0,1), 
    array(
1,0,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1), 
    array(
1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,0,1,0,1,1,1), 
    array(
1,0,1,0,1,0,0,0,0,1,1,0,1,0,1,0,1,0,1,1,0,1,0,1), 
    array(
1,0,1,0,1,0,1,1,0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,1), 
    array(
1,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,1,1,0,0,0,1), 
    array(
1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,1,0,0,1,1,1,0,1), 
    array(
1,0,1,0,0,0,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,1,0,1), 
    array(
1,0,1,0,1,1,1,1,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1), 
    array(
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
); 

/* 
Esta función ubica aleatoriamente (o a través del parámetro $p) 
la caperusita en el laberinto. Además, guarda estas posiciones en las 
variables $qx y $qy 
*/ 
function caperusita(&$array,$p NULL

    global 
$qx,$qy
    if(isset(
$p) && strlen($p) >= 3) { 
        
$p explode(',',$p); 
        
$t[1] = $p[0]; 
        
$t[0] = $p[1]; 
    } else { 
        
$d=count($array); 
        
$t[0]=rand(0,($d-1)); 
        
$t[1]=rand(0,($d-1));     
    } 
    if(
$array[$t[0]][$t[1]] == && isset($array[$t[0]][$t[1]])) { 
        
$array[$t[0]][$t[1]] = 2
        
$qx $t[1]; 
        
$qy $t[0]; 
        return 
TRUE
    } else { 
        return 
caperusita($array); 
    } 


La duda con la que estoy es como poder hacer el laberinto de manera randomica.
osea la forma.

Código (php) [Seleccionar]
//Array que devolverá el laberinto
$array = array(
    array(1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
    array(1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1),
    array(1,0,1,0,1,1,1,1,0,1,1,1,1,1,0,1,0,0,1,0,1,0,0,1),
    array(1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,1,0,1,1,1,0,1,1),
    array(1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1),
    array(1,0,0,0,0,0,0,1,0,1,1,1,0,1,0,1,1,0,1,0,1,0,0,1),
    array(1,1,1,0,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1),
    array(1,0,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1),
    array(1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,1),
    array(1,0,1,0,1,0,1,1,1,1,1,1,0,1,0,1,0,0,1,0,1,0,0,1),
    array(1,0,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1),
    array(1,0,1,0,1,0,1,1,1,1,1,0,1,1,0,0,0,1,0,0,1,0,0,1),
    array(1,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,0,1,1),
    array(1,0,1,0,0,0,0,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,1),
    array(1,0,1,1,1,0,0,1,0,0,1,0,0,1,0,1,1,1,1,0,1,1,0,1),
    array(1,0,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1),
    array(1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,0,1,0,1,1,1),
    array(1,0,1,0,1,0,0,0,0,1,1,0,1,0,1,0,1,0,1,1,0,1,0,1),
    array(1,0,1,0,1,0,1,1,0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,1),
    array(1,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,1,1,0,0,0,1),
    array(1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,1,0,0,1,1,1,0,1),
    array(1,0,1,0,0,0,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,1,0,1),
    array(1,0,1,0,1,1,1,1,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1),
    array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
);


La funcion de la caperucita sera casi la misma a la del lobo, lo que quiero es poder darle la opcion a que el lobo lo biusqye de manera propia si n necesirdad de intervencion del usuario ...
#12
Hola como les va muchachos miren estoy volviendo nuevamente a lo que es visual basic y se me ocurrio hacer un laberinto con un personaje x el cual estoy por ver la idea es de poder darle al personaje lo dificil viene a continuacion lo cual no me ubico la idea es de crearle el laberinto dandole un a matriz n * n la cual nosotros la damos, y de crear los obstaculos del laberinto darle un inicio y un final ....
#13
PHP / Micro Tutorial Tratamiento de imagenes en Php
27 Noviembre 2009, 15:55 PM
Hola bueno miren queria darles essta ayuda a todos los que trabajan con imagenes le di el nombre de microTutorial por que es mi primero y si tienes fallas me avisas porfavor soy principiante:

NOTA: La informacion la saque de toda parte asi que es un codigo Mixtura (Me refiero que ES CODIGO sacado de varios source)

TRATAMIENTO DE LA IMAGEN
Primero tenemos que aprender a tratar a la imagen con esta pagina lo que hacemos es redimensionar el tamaño y ajustarlo.

Nombre de la pagina img.inc.php

Código (php) [Seleccionar]
<?php
//TRATAMIENTO DE IMAGENES
//====================================

 
class somaImagen{
 var 
$imagen_recurso; var $imagen_salida;
 var 
$imagen_recurso_ancho; var $imagen_salida_ancho;
 var 
$imagen_recurso_alto; var $imagen_salida_alto;
 var 
$imagen_recurso_desde_x 0; var $imagen_salida_desde_x 0;
 var 
$imagen_recurso_desde_y 0; var $imagen_salida_desde_y 0;
 var 
$escala; var $imagen_imprimible;
 var 
$rango_menor 1;
 var 
$rango_mayor 1000;
 
 function 
validarMedida($valor){
 if (
$valor>=($this->rango_menor) and $valor<$this->rango_mayor){
 return 
$valor;
 }else{
 if(
$valor <= ($this->rango_menor-1) ){return ($this->rango_menor); }
 if(
$valor>= $this->rango_mayor ){return $this->rango_mayor ; }
 }
 } 
 
 function 
crearImagen($imagen){
 
$this->imagen_recurso $imagen;
 
$this->imagen_salida imagecreatefromjpeg($this->imagen_recurso);
 
$this->imagen_recurso_ancho imagesx($this->imagen_salida);
 
$this->imagen_recurso_alto imagesy($this->imagen_salida);
 }
 
 
 function 
crearSalida($ancho,$alto){
 
$this->imagen_salida_ancho $ancho;
 
$this->imagen_salida_alto $alto;
 
$this->imagen_imprimible imagecreatetruecolor($this->imagen_salida_ancho,$this->imagen_salida_alto);
 
imagecopyresampled(
 
$this->imagen_imprimible,
 
$this->imagen_salida,
 
$this->imagen_recurso_desde_x,
 
$this->imagen_recurso_desde_y,
 
$this->imagen_salida_desde_x,
 
$this->imagen_salida_desde_y,
 
$this->imagen_salida_ancho,
 
$this->imagen_salida_alto,
 
$this->imagen_recurso_ancho,
 
$this->imagen_recurso_alto
 
);
 
imagejpeg($this->imagen_imprimibleNULL,100);
 
imagedestroy($this->imagen_imprimible);
 }
 
 function 
Cuadro($lados,$imagen){
 
$lados=$this->validarMedida($lados);
 
$this->crearImagen($imagen);
 if ( 
$this->imagen_recurso_ancho>= $this->imagen_recurso_alto )
 {
$this->escala=$lados/$this->imagen_recurso_ancho;}
            else
 {
$this->escala=$lados/$this->imagen_recurso_alto;}
 
$this->crearSalida($this->imagen_recurso_ancho $this->escala $this->imagen_recurso_alto $this->escala);
 } 
 
 function 
AnchoMax($ancho,$imagen){
 
$ancho=$this->validarMedida($ancho);
 
$this->crearImagen($imagen);
 
$this->escala=$ancho/$this->imagen_recurso_ancho;
 
$this->crearSalida($this->imagen_recurso_ancho $this->escala $this->imagen_recurso_alto $this->escala);
 }
 
 
 function 
AltoMax($alto,$imagen){
 
$alto=$this->validarMedida($alto);
 
$this->crearImagen($imagen);
 
$this->escala=$alto/$this->imagen_recurso_alto;
 
$this->crearSalida($this->imagen_recurso_ancho $this->escala $this->imagen_recurso_alto $this->escala);
 }
 
 function 
Encuadrar($medida,$imagen,$alineacion){
 
$medida=$this->validarMedida($medida);
 
$this->crearImagen($imagen);
 if ( 
$this->imagen_recurso_ancho <= $this->imagen_recurso_alto ){
 
$this->escala $this->imagen_salida_ancho/$this->imagen_recurso_ancho;
 if(
$alineacion!=0){
 if(
$alineacion==1){
 
$this->imagen_salida_desde_y=($this->imagen_recurso_alto-$this->imagen_recurso_ancho);
 }
 if(
$alineacion==2){
 
$this->imagen_salida_desde_y=($this->imagen_recurso_alto-$this->imagen_recurso_ancho)/2;
 }
 }
 
$this->imagen_recurso_alto $this->imagen_recurso_ancho;
 }else {
 
$this->escala $this->imagen_salida_alto/$this->imagen_recurso_alto;
 if(
$alineacion!=0){
 if(
$alineacion==1){
 
$this->imagen_salida_desde_x=($this->imagen_recurso_ancho-$this->imagen_recurso_alto);
 }
 if(
$alineacion==2){
 
$this->imagen_salida_desde_x=($this->imagen_recurso_ancho-$this->imagen_recurso_alto)/2;
 }
 }
 
$this->imagen_recurso_ancho $this->imagen_recurso_alto;
 }
 
$this->crearSalida($medida,$medida);
 }
 }
 
?>


#14
PHP / Duda con el manejo de Programacion a wEB
27 Noviembre 2009, 15:23 PM
Hola miren estoy con un severo problema yo aprendi a programar en php de una manera autodidacta aprendiendo de mis errores y mejoras.
Ahora toy con una gran duda me indicaron algunos que mi programacion es estructurada otros dinamica, y al final no se aver si alguien me indica de los muchachos que tienen mas experiencia.
Aqui esta mi codigo de mi pagina Principal.

NOTA:
La pagina que estoy desarrollando es de venta online implementando el carrito de compras


Código (php) [Seleccionar]
<?php
// Configuration
require_once('config.php');
   
// Install 
if (!defined('HTTP_SERVER')) {
header('Location: install/index.php');
exit;


// Startup
require_once(DIR_SYSTEM 'startup.php');

// Load the application classes
require_once(DIR_SYSTEM 'library/customer.php');
require_once(
DIR_SYSTEM 'library/currency.php');
require_once(
DIR_SYSTEM 'library/tax.php');
require_once(
DIR_SYSTEM 'library/weight.php');
require_once(
DIR_SYSTEM 'library/measurement.php');
require_once(
DIR_SYSTEM 'library/cart.php');

// Loader
$loader = new Loader();
Registry::set('load'$loader);

// Config
$config = new Config();
Registry::set('config'$config);

// Database 
$db = new DB(DB_DRIVERDB_HOSTNAMEDB_USERNAMEDB_PASSWORDDB_DATABASE);
Registry::set('db'$db);

// Settings
$query $db->query("SELECT * FROM " DB_PREFIX "setting");

foreach (
$query->rows as $setting) {
$config->set($setting['key'], $setting['value']);
}

$log = new Logger($config->get('config_error_filename'));
Registry::set('log'$log);

// Error Handler
function error_handler($errno$errstr$errfile$errline) {
global $config$log;

switch ($errno) {
case E_NOTICE:
case E_USER_NOTICE:
$error "Notice";
break;
case E_WARNING:
case E_USER_WARNING:
$error "Warning";
break;
case E_ERROR:
case E_USER_ERROR:
$error "Fatal Error";
break;
default:
$error "Unknown";
break;
}

    if (
$config->get('config_error_display')) {
        echo 
'<b>' $error '</b>: ' $errstr ' in <b>' $errfile '</b> on line <b>' $errline '</b>';
}

if ($config->get('config_error_log')) {
$log->write('PHP ' $error ':  ' $errstr ' in ' $errfile ' on line ' $errline);
}

return TRUE;
}

// set to the user defined error handler
set_error_handler('error_handler');

// Request
$request = new Request();
Registry::set('request'$request);

// Response
$response = new Response();
$response->addHeader('Content-Type''text/html; charset=utf-8');
Registry::set('response'$response);

// Cache
Registry::set('cache', new Cache());

// Url
Registry::set('url', new Url());

// Session
$session = new Session();
Registry::set('session'$session);

// Document
Registry::set('document', new Document());

// Language
$language = new Language();
Registry::set('language'$language);

// Customer
Registry::set('customer', new Customer());

// Currency
Registry::set('currency', new Currency());

// Tax
Registry::set('tax', new Tax());

// Weight
Registry::set('weight', new Weight());

// Weight
Registry::set('measurement', new Measurement());

// Cart
Registry::set('cart', new Cart());

// Front Controller 
$controller = new Front();

// SEO URL's
$controller->addPreAction(new Router('common/seo_url'));

// Router
if (isset($request->get['route'])) {
$action = new Router($request->get['route']);
} else {
$action = new Router('common/home');
}

// Dispatch
$controller->dispatch($action, new Router('error/not_found'));

// Output
$response->output();
?>
#15
PHP / Dar permisos a los usuarios en login
21 Noviembre 2009, 20:20 PM
Bueno mi duda es en dar ciertos permisos especiales a los usuariosm el admin y lo usuarios registrados no se si me pueden colaborar gracias



session_start();  if (!isset($_SESSION['logeado'])){ if ($_POST['user'] == 'carlos' && $_POST['password'] == 'entrar') { session_regenerate_id(); $_SESSION['logeado'] = true; $_SESSION['token'] = md5(uniqid(rand(), TRUE)); }} else if ($_POST['logout']){ if (isset($_SESSION['token']) &&        $_POST['token'] == $_SESSION['token'])    {      $_SESSION = array();    session_destroy();    } } if ($_SESSION['logeado'] == true){    echo 'Contenido exlusivo' . '<br />';}  ?>  <html> <body> <?php if ($_SESSION['logeado'] == false){?>    <form method='POST' action='login.php'>    User:    <input name="user" type="text" maxlength="50" size="20" />    Password:    <input name="password" type="text" maxlength="50" size="20" />    <input name="login" type="submit" value="Login" />    </form> <?php } else{?>     <form method='POST' action='login.php'>    <input name="token" type="hidden" value="<?php echo $_SESSION['token']; ?>" />    <input name="logout" type="submit" value="Logout" />    </form> <?php}?> </body> </html>



Bueno como hago para enlazar en mi base de datos y me funcione
la tabla se llama usuarios
y tiene los siguientes campos
id
nombre
password
Nivel: dos nivel administrador y usuario normal
#16
Hola como estan miren no se si se puede abrir un nuevo sub-foro dentro de lo que es programacion general el sub-foro seria relativo a lo que es Haskell una humilde sugerencia :laugh: :¬¬ :xD
#17
PHP / Login con Php Y ajax
9 Noviembre 2009, 03:19 AM
Hola como estan queria ver si me pueden colaborar porfavor
con un pequeño formulario en ajax que es de login la idea la tengo pero lo que me falta es el codigo php para la verificacion y validacion del usuario y la contraseña para dar privilegios