Retroceder   Foros del Web > Programación para sitios web > PHP

Respuesta
 
Herramientas Desplegado
Antiguo 07-nov-2004, 16:44   #121 (permalink)
Nefertiter tiene algunos puntos positivos de karma
 
Avatar de Nefertiter
 
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.260
Enviar un mensaje por MSN a Nefertiter Enviar un mensaje por Yahoo  a Nefertiter Enviar un mensaje por Skype™ a Nefertiter
una medio repetida pero nunca demas

Pregunta:Sesiones: Que y Para que?

-Respuesta: Las sesiones basicamente son varibles globales que nos permiten almacenar datos que necesiten volver a ser usados en otros accesos a la pagina. Cuando una persona entra a una pagina que utiliza sesiones automaticamente se crea un archivo de session en los archivos temporales del servidor y en este archivo es donde se guardan los datos que nosotros deseemos almecenar.
Para poder manejar las sesiones seria conveniente primero ver la manera que accedemos a estas y las usamos.
Como dijimos antes cuando el usuario entra a la pagina que usa sesiones se crea un archivo, este archivo posee el mismo nombre que su "id".
Para que una pagina utilice sesiones debemos inicializarla con la funcion "session_start(void)",que basicamente lo que hace es crear una nueva sesion o retomar una creada en otra pagina(del sitio). Las sessiones propagan su SID(SESSION ID) de dos posibles maneras, segun php.ini, por cookies o por url, es decir agregando a todos los posibles link el SID de la sesion.
Otra razon por la que la sesiones suelen ser muy utilizadas es para la "autentificacion", determinando el acceso a la pagina segun alguna variable especifica de la sesion.
Creemos dos archivos utiles para la explicacion:
-index.php
Código PHP:
<?php 
session_start
();
?>
<html>
<head>
<title>Las sesiones y Yo(Nefertiter)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><?php
if(isset($_POST['enviar'])){
if(empty(
$_POST['usuario']) || empty($_POST['password']))
echo 
'Debes llenar todos los datos'
elseif(
$_POST['usuario']==test and $_POST['password']==test){
$_SESSION['usuario']=$_POST['usuario'];
$_SESSION['password']=$_POST['password']; 
echo 
'Te haz loguedo como '.$_SESSION['usuario'];
}
}
?></td>
<td rowspan="2"><form name="login" method="post" action="index.php">
<table width="250" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>Usuario:</td>
<td><input name="usuario" type="text" id="usuario"></td>
</tr>
<tr>
<td>Password:</td>
<td><input name="password" type="password" id="password"></td>
</tr>
<tr align="center">
<td colspan="2"><input name="enviar" type="submit" id="enviar" value="Enviar"></td>
</tr>
</table>
</form></td>
</tr>
<tr>
<td><a href="segura.php">PAGINA SEGURA</a></td>
</tr>
</table>
</body>
</html>
-segura.php
Código PHP:
<?php 
session_start
();
if(!empty(
$_SESSION['usuario'])){
/* La funcion empty() devuelve verdadero si el argumento posee un valor vacio,
al usar !empty() devuelve verdadero no solo si la variable fue declarada sino 
ademas si contiene algun valor no nulo.
*/
echo 'Te haz logueado como :'.$_SESSION['usuario'];
echo 
'Haz logrado el acceso a una pagina segura';
}else{
echo 
'No estas logueado<br>';
echo 
'Esta pagina es restringida!';
}
?>
Como hemos visto es sumamente simple la manera que en las variables de sesiones son establecidas puesto que se las trabaja como variables comunes, ahora creemos otro archivo,en el que mostraremos como eliminarlas.
-logout.php
Código PHP:
<?php 
unset($_SESSION['usuario']);
unset(
$_SESSION['password']);
/* la funcion unset() destruye la varible que se le de como argumento*/
echo "Ya no te encuentras logueado"
?>
-Otras funciones
PHP no se limita solamente a una funcion en lo que a sesiones respecta. Tambien poseemos otras como "session_name()", que nos permiten darle algun nombre en especial a la session, "session_id()", que nos devuelve el id de la session y en caso de introducir un argumento la reemplaza. Tambien poseemos otra funcion llamada "session_cache_limiter()" que nos sirve para averiguar el limitador de cache actual, existen 3 modos: "nocache", "public" y "private"; cada una de estas posee una manera determinada de manejar la caducidad de las variables de sesion que se envian al navegador. Un detalle tanto "session_name()" como "session_cache_limiter()" deben ser declarados antes que "session_start()". Un ultimo ejemplo:

-sessions.settings.php
Código PHP:
<?php
session_name 
("recursofaqs");
session_cache_limiter ("private");
session_start(); 
echo 
"<br> El nombre de la sesion es: ".session_name();
echo 
"<br> El limitador de la sesion es: ".session_cache_limiter();
echo 
"<br> El id de la sesion es: "session_id();
?>
Bueno con este ultimo humilde ejemplo damos por finalizada la FAQ sobre sesiones

Última edición por Nefertiter; 07-nov-2004 a las 16:48.
Nefertiter está desconectado   Responder Citando
Antiguo 22-nov-2004, 02:26   #122 (permalink)
San Lorenzo ha deshabilitado el karma
 
Avatar de San Lorenzo
 
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Como Saber Si Me Visita Un Robot O Bot

Código PHP:
<?php

// Lista de robots

$robot[] = "googlebot";
$robot[] = "msnbot";
$robot[] = "overture";
$robot[] = "lycos";
$robot[] = "seek";
$robot[] = "inktomi";
$robot[] = "yahoo";
$robot[] = "altavista";
$robot[] = "alexa";
$robot[] = "crawler";

foreach(
$robot as $bot){

    if(
eregi($bot$HTTP_USER_AGENT)){

        echo 
"me esta visitando un bot: " $bot;

        
// puedes enviarte un mail para avisarte que te a visitado un robot

        
$destino "tu@ejemplo.com";

        
$asunto "Me visito un robot";

        
$mensaje "Este robot: " $bot " me ha visitado mi pagina web";

        
$cabecera "From: webmaster@" $SERVER_NAME;

        
mail($destino$asunto"me visito: $bot"$cabecera);

    }

}

?>
Espero que les sea de utilidad
__________________
Favor de Revisar Politicas de FDW seccion firmas de usuario
San Lorenzo está desconectado   Responder Citando
Antiguo 27-nov-2004, 02:57   #123 (permalink)
San Lorenzo ha deshabilitado el karma
 
Avatar de San Lorenzo
 
Fecha de Ingreso: noviembre-2004
Mensajes: 68
¿Saber saber quien nos linkea?

Por medio de la variable $HTTP_REFERER

El codigo a continuacion guarda las datos en un archivo (referer.log).

Código PHP:
<?php

if(isset($HTTP_REFERER)){

    if(!
eregi($HTTP_HOST$HTTP_REFERER)){

        
$fp fopen("referer.log""a");

        
$referer .= "URL: " $HTTP_REFERER "\n";
        
$referer .= "---------------------------------------------------------------------------\n";

        
fwrite($fp$referer);

        
fclose($fp);

    }

}

?>
Espero que les sea de utilidad.
__________________
Favor de Revisar Politicas de FDW seccion firmas de usuario
San Lorenzo está desconectado   Responder Citando
Antiguo 08-dic-2004, 08:23   #124 (permalink)
Takitei ha deshabilitado el karma
 
Avatar de Takitei
 
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.235
Enviar un mensaje por MSN a Takitei Enviar un mensaje por Yahoo  a Takitei
Tema: Mostrando resultados
Pregunta: ¿Cómo convertir los saltos de lineas invisibles por <br> en el código?
Respuesta:

Muy util cuando tenemos un texto que viene de un <textarea> o quizás cuando tenemos texto en nuestras bases de datos separados por ENTERs y queremos que se muestren igual en HTML.

Existen 2 formas de hacer esto:

Forma 1:
Código PHP:
$texto=str_replace(Chr(13), "<br />"$texto); 
Forma 2:
Código PHP:
$texto=nl2br($texto); 
Cualquiera es totalmente válida, es cuestión de gustos. Oviamente, nl2br() es una función específicamente diseñada para realizar ese trabajo, por lo tanto es recomendado usarla.
__________________
Takitei
Ingeniarte.com
Tecnopedia.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.

Última edición por Takitei; 10-dic-2004 a las 07:21.
Takitei está desconectado   Responder Citando
Antiguo 08-dic-2004, 19:50   #125 (permalink)
Dark_Fox ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2004
Mensajes: 5
Y bueno aqui estoi, voi a enseñarles a REgistrar usuarios en la Base de datos y logearlos!.
Aqui vamos :D.
Archivos necesarios:
- Conexion.inc.php
- Registrarse.php
- Registrado.php
- Logearse.php
- Logeado.php

--------------------------------------------------------------------------
Conexion.inc.php:
<?
$conn;
function conectar()
{
global $conn
$conn = mysql_connect("host","user","passwd") or die (mysql_error());
mysql_select_db("db",$conn) or die (mysql_error());
}
function desconectar() {
mysql_close($conn);
}
?>
Terminamos el conexion.inc.php.
--------------------------------------------------------------------------
Registrarse.php
Este es super simple, creamos 3 campos de texto
Usuario
Passwd
Mail
y a los campos les damos esos nombres
osea:
Usuario = $Usuario
Passwd = $Passwd
Mail = $Mail.
y hacemos un formulario! y al boton Submit le llamamos enviar.
Terminamos el Registrarce.php
--------------------------------------------------------------------------
Registrado.php
<?
requiere("Conexion.inc.php");
conectar()
if(isset($enviar))
{
mysql_query("INSERT INTO mi_base_de_datos (usuario,passw,mail) VALUE ('$Usuario', '$Passwd', '$Mail')");
echo "Registro Exitoso! Usuario: $Usuario Mail: $Mail";
}
?>
Terminamos el Registrado.php
--------------------------------------------------------------------------
Logearse.php
Este es super Simple es igual que el registrarse.php solo que aqui
hacemos 2 campos de Txt Usuario y Passwd ($Usuario y $Passwd)
y el boton Submit = enviar.
Terminamos el Logearse.php
--------------------------------------------------------------------------Logeado.php
<?
requiere("Conexion.inc.php");
conectar()
if(isset($enviar))
{
$a = mysql_quey("SELECT user, passwd FROM mi_base_de_datos WHERE user='$Usuario' AND passwd='$Passwd'",$conn);
if(mysql_num_rows($a) == 1) {
echo "Estas Registrado! Bienvenido $Usuario";
}
else {
echo "Error de Usuario Y/o Contraseña";
}
?>
Terminamos el Tutorial XD.
Ojo
$a = mysql_quey("SELECT user, passwd FROM mi_base_de_datos WHERE user='$Usuario' AND passwd='$Passwd'",$conn);
user, passwd fueron los nombres que le puse a los campos en la base de datos!! si uds les ponen a a usuario y b a passwd pos..remplazan!

Atte Dark_Fox ( www.teamcarrete.cl ) Cualquier duda me avisan!.
Dark_Fox está desconectado   Responder Citando
Antiguo 11-dic-2004, 20:43   #126 (permalink)
Takitei ha deshabilitado el karma
 
Avatar de Takitei
 
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.235
Enviar un mensaje por MSN a Takitei Enviar un mensaje por Yahoo  a Takitei
Tema: Tips & Tricks
Pregunta: ¿Cómo reemplazar palabras de una cadena?
Respuesta:

Como bien sabemos, tenemos la función str_replace(), muy útil para reemplazos sencillos. Pero cuando necesitamos de más complejidad, debemos recurrir a las expresiones regulares.

Supongamos que tenemos la siguiente cadena:

"Esta es la formacion del ion"

Y queremos reemplazar la palabra "ion" por "anion". Si usamos str_replace() obtendremos algo asi:

"Esta es la formacanion del anion"

Para que eso no ocurra, debemos aplicar preg_replace() con la siguiente expresión regular:

Código PHP:
$resultado preg_replace("/\bion(s)?\b/i""anion""Esta es la formacion del ion"); 
Y obtendremos lo que buscamos:

"Esta es la formacion del anion"

NOTA: La "i" que se encuentra después del slash indica "case insensitive".
__________________
Takitei
Ingeniarte.com
Tecnopedia.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
Takitei está desconectado   Responder Citando
Antiguo 06-ene-2005, 00:14   #127 (permalink)
stock tiene algunos puntos positivos de karma
 
Avatar de stock
 
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 1.993
Tema: Funciones

Pregunta: Como puedo optener la IP del Cliente??

Respuesta : Usa este algoritmo!!

Código PHP:
function Saber_IP(){
        if(
getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")){
                 
$ip getenv("HTTP_CLIENT_IP");
        }
           elseif(
getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")){
               
$ip getenv("HTTP_X_FORWARDED_FOR");
           }
           elseif(
getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")){
               
$ip getenv("REMOTE_ADDR");
           }
           elseif(isset(
$_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")){

               
$ip $_SERVER['REMOTE_ADDR'];
           }
           else {
               
$ip "Unknown";
           }
          return 
$ip;
    }

//La forma para usarse es asi:

$IP Saber_Ip();

echo 
"Tu IP es: ".$IP
__________________
Don't hate the languaje, hate the runtime environment
Crysfel's Blog :: Blog de programación, JAVA,PHP, AJAX, JavaScript, CSS y otras hierbas

Última edición por stock; 07-ene-2005 a las 17:16.
stock está desconectado   Responder Citando
Antiguo 10-ene-2005, 12:02   #128 (permalink)
Takitei ha deshabilitado el karma
 
Avatar de Takitei
 
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.235
Enviar un mensaje por MSN a Takitei Enviar un mensaje por Yahoo  a Takitei
Tema: E-mails
Pregunta: ¿Cómo ocultar mi e-mail de contacto para evitar SPAM?
Respuesta:

Todos luchamos contra el SPAM. Si colocamos nuestro e-mail en nuestro sitio web para que los visitantes nos contacten... algún bot o crawler tomará nuestro correo para enviarnos basura.

Se me ocurrió una idea muy sencilla, y muy eficaz al mismo tiempo. Para ello comenzaremos creando un archivo llamado "contacto.php" el cual contendrá el siguiente código:

Código PHP:
<?php
echo '<meta http-equiv="Refresh" content="0;url=index.php">';
header('Location: mailto:info@tusitioweb.com');
?>
Luego... en lugar de hacer un vínculo a nuestro e-mail, lo haremos a:

<a href="contacto.php">Contáctenos</a>

Tan sencillo como eso. Cuando el visitante de clic, se abrirá la famosa ventanita para enviar un correo, bien sea de Outlook, Thunderbird, etc.
__________________
Takitei
Ingeniarte.com
Tecnopedia.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
Takitei está desconectado   Responder Citando
Antiguo 10-ene-2005, 12:15   #129 (permalink)
Takitei ha deshabilitado el karma
 
Avatar de Takitei
 
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.235
Enviar un mensaje por MSN a Takitei Enviar un mensaje por Yahoo  a Takitei
Tema: Tips & Tricks
Pregunta: ¿Cómo crear etiquetas personalizadas para nuestra web?
Respuesta:

En algunas ocasiones nos preguntamos... ¿cómo hacer para resumir una etiqueta... <a href... bla bla bla... o una <img src="......?

Si usamos bases de datos, lo mejor será crear alguna etiqueta personalizada asi como la que usan estos foros, para no tener que usar código HTML directo. Esto es muy sencillo. Primeramente creamos un archivo que procesará nuestras etiquetas asi:

Código PHP:
//esta linea convierte las etiquetas [img]
$texto=preg_replace("`\[img](.*)?\[/img\]`is","<img src=\"$1\" />",$texto);

//esta linea convierte las etiquetas [url]
$texto=preg_replace("`\[url=(.*)?\](.*)?\[/url\]`is"'<a href="$1">$2</a>'$texto);

//$texto es la variable que contiene nuestro texto junto con las etiquetas, puede provenir de una base de datos o algo asi. 
Ahora... cada que almacenemos algo en nuestra BD, podremos insertar imágenes o vínculos con solo aplicar las siguientes etiquetas:

[img]url de la imagen[/img]

[url=vinculo]nombre del vinculo[/url ]

PHP se encargará de convertirlas a código HTML válido. Suerte!
__________________
Takitei
Ingeniarte.com
Tecnopedia.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.

Última edición por Takitei; 10-ene-2005 a las 12:16.
Takitei está desconectado   Responder Citando
Antiguo 16-ene-2005, 09:43   #130 (permalink)
zsamer tiene algunos puntos positivos de karma
 
Fecha de Ingreso: noviembre-2003
Mensajes: 772
¿Cómo puedo mostrar en un formulario select valores de un directorio?

Tema: Formularios
Créditos: Zsamer
Pregunta: ¿Cómo puedo mostrar en un formulario select valores de un directorio?
Respuesta:

Código PHP:
<?php
$content 
.=  "</br>";
$content .=  "<center>";
$content .=  "<form action=\"skins.php\" method=\"post\">";
$content .=  "<select name=\"skins\">";
$handle=opendir('skins');
while (
$file readdir($handle)) {
    if ( (!
ereg("[.]",$file)) ) {
            
$themelist .= "$file ";
    }
}
closedir($handle);
$themelist explode(" "$themelist);
sort($themelist);
for (
$i=0$i sizeof($themelist); $i++) {
        if(
$themelist[$i]!="") {
            
$content .=  "<option value=\"$themelist[$i]\" ";
        if(((
$userinfo[theme]=="") && ($themelist[$i]=="$Default_Theme")) || ($userinfo[theme]==$themelist[$i])) $content .=  "selected";
        
$content .=  ">$themelist[$i]\n";
        
    }}
$content .=  "</option>";
$content .=  "</select>";    
$content .=  "</br>";
$content .=  "</br>";
$content .=  "<input type=\"submit\" value=\"Cambiar\">";
$content .=  "</form>";
echo 
$content
?>
zsamer está desconectado   Responder Citando
Antiguo 27-ene-2005, 17:47   #131 (permalink)
asinox ha deshabilitado el karma
 
Avatar de asinox
 
Fecha de Ingreso: noviembre-2002
Ubicación: httpdocs
Mensajes: 2.561
Manejando archivos multiples con generacion ilimitada

TEMA: Manejo de Archivos Múltiples ilimitado.

PREGUNTA: ¿Cómo hago para subir mas de 1 archivo, o talvez las cantidad que yo desee sin limitaciones?

RESPUESTA:

Código PHP:
<form action="" method="post" enctype="multipart/form-data" name="form1">
      Cantidad: <select name="cantidad">
                    <script type="text/javascript">
                    for(x=1;x<=10;x++){
                    document.write("<option value="+ x +">"+ x+"</option>");
                    }
                    </script>
      </select>
      <input type="submit" name="Submit" value="Submit"><br>
      

<?php    
 $uploaddir
=$_SERVER['DOCUMENT_ROOT']."/upload/imagenes/";

if(isset(
$_POST['Submit'])){
        echo 
"Elegir Im&aacute;genes para Subir<br>";
            for(
$i=1;$i<=$_POST['cantidad'];++$i){
                echo 
"<input type=\"file\" name=\"archivo[]\"><br>";
            }
        echo 
"<input type=\"submit\" name=\"Submit2\" value=\"Submit2\">";
        echo 
"<input type=\"hidden\" name=\"cant1\" value=\"$i\">";
    }
    
    if(isset(
$_POST['Submit2'])){
        
$cantidad2 =count($_FILES["archivo"]);
        for (
$j=0;$j<=$cantidad2;$j++){
                
$archivo $_FILES["archivo"]["tmp_name"][$j]; 
                
$tamanio $_FILES["archivo"]["size"][$j];
                
$tipo    $_FILES["archivo"]["type"][$j];
                
$nombre  $_FILES["archivo"]["name"][$j];

                    
$x=$j;
             do{
             
$x++;
                if( 
$archivo != "" ){
                           
$fp fopen($archivo"rb");
                           
$contenido fread($fp$tamanio);
                           
$contenido addslashes($contenido);
                           
fclose($fp);
                           
//AQUI  INSERTE EN LA BASE DE DATOS
                           
                           
if(copy($archivo$uploaddir.$nombre))
                                {
                                   echo 
$nombre." Subido con Exito<br>";
                                }
                           }
                        }while(
$x<$j);
             }
        }
        
?>
</form>
Espero que sea de ayuda
__________________
www.noxmediastudio.com
asinox.wordpress.com

Última edición por asinox; 12-dic-2007 a las 13:52.
asinox está desconectado   Responder Citando
Antiguo 18-feb-2005, 15:47   #132 (permalink)
Anarko está en el buen camino
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.115
El abc de crear una imagen Espectacular.

No se tu, pero cuando me pille esto en el manual de PHP, (buscando por imagecolorallocatealpha), quede anonadado, correlo, (y estudialo), solo necesitas tener la libreria GD, la imagen se crea TODA con estas lineas, nada de includes ni otras librerias:

Código PHP:
<?php
$size 
300;
$image=imagecreatetruecolor($size$size);

// something to get a white background with black border
$back imagecolorallocate($image255255255);
$border imagecolorallocate($image000);
imagefilledrectangle($image00$size 1$size 1$back);
imagerectangle($image00$size 1$size 1$border);

$yellow_x 100;
$yellow_y 75;
$red_x    120;
$red_y    165
$blue_x   187;
$blue_y   125
$radius   150;

// allocate colors with alpha values
$yellow imagecolorallocatealpha($image255255075);
$red    imagecolorallocatealpha($image