|
162
|
Programación / PHP / Re: Problemas de horarios en el servidor.
|
en: 9 Julio 2013, 21:16 pm
|
En el fichero php.ini de tu servidor (localhost) puedes cambiar la zona horaria del PHP: [Date] ; Defines the default timezone used by the date functions date.timezone = Europe/Madrid Buenas, lo que me interesa, es cambiar la hora del servidor web, no la del local, pues en el local funciona bien... ¡Gracias por la ayuda! podrias poner el "twitteroauth.php" para ver como lo trata?
Buenas twitteroauth.php <?php /* * Abraham Williams (abraham@abrah.am) http://abrah.am * * The first PHP Library to support OAuth for Twitter's REST API. */ /* Load OAuth lib. You can find it at http://oauth.net */ require_once('OAuth.php'); /** * Twitter OAuth class */ class TwitterOAuth { /* Contains the last HTTP status code returned. */ public $http_code; /* Contains the last API call. */ public $url; /* Set up the API root URL. */ public $host = "https://api.twitter.com/1.1/"; /* Set timeout default. */ public $timeout = 30; /* Set connect timeout. */ public $connecttimeout = 30; /* Verify SSL Cert. */ public $ssl_verifypeer = FALSE; /* Respons format. */ public $format = 'json'; /* Decode returned json data. */ public $decode_json = TRUE; /* Contains the last HTTP headers returned. */ public $http_info; /* Set the useragnet. */ public $useragent = 'TwitterOAuth v0.2.0-beta2'; /* Immediately retry the API call if the response was not successful. */ //public $retry = TRUE; /** * Set API URLS */ function accessTokenURL() { return 'https://api.twitter.com/oauth/access_token'; } function authenticateURL() { return 'https://api.twitter.com/oauth/authenticate'; } function authorizeURL() { return 'https://api.twitter.com/oauth/authorize'; } function requestTokenURL() { return 'https://api.twitter.com/oauth/request_token'; } /** * Debug helpers */ function lastStatusCode() { return $this->http_status; } function lastAPICall() { return $this->last_api_call; } /** * construct TwitterOAuth object */ function __construct($consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) { $this->sha1_method = new OAuthSignatureMethod_HMAC_SHA1(); $this->consumer = new OAuthConsumer($consumer_key, $consumer_secret); if (!empty($oauth_token) && !empty($oauth_token_secret)) { $this->token = new OAuthConsumer($oauth_token, $oauth_token_secret); } else { $this->token = NULL; } } /** * Get a request_token from Twitter * * @returns a key/value array containing oauth_token and oauth_token_secret */ function getRequestToken($oauth_callback) { $parameters['oauth_callback'] = $oauth_callback; $request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters); $token = OAuthUtil::parse_parameters($request); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; } /** * Get the authorize URL * * @returns a string */ function getAuthorizeURL($token, $sign_in_with_twitter = TRUE) { $token = $token['oauth_token']; } if (empty($sign_in_with_twitter)) { return $this->authorizeURL() . "?oauth_token={$token}"; } else { return $this->authenticateURL() . "?oauth_token={$token}"; } } /** * Exchange request token and secret for an access token and * secret, to sign API calls. * * @returns array("oauth_token" => "the-access-token", * "oauth_token_secret" => "the-access-secret", * "user_id" => "9436992", * "screen_name" => "abraham") */ function getAccessToken($oauth_verifier) { $parameters['oauth_verifier'] = $oauth_verifier; $request = $this->oAuthRequest($this->accessTokenURL(), 'GET', $parameters); $token = OAuthUtil::parse_parameters($request); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; } /** * One time exchange of username and password for access token and secret. * * @returns array("oauth_token" => "the-access-token", * "oauth_token_secret" => "the-access-secret", * "user_id" => "9436992", * "screen_name" => "abraham", * "x_auth_expires" => "0") */ function getXAuthToken($username, $password) { $parameters['x_auth_username'] = $username; $parameters['x_auth_password'] = $password; $parameters['x_auth_mode'] = 'client_auth'; $request = $this->oAuthRequest($this->accessTokenURL(), 'POST', $parameters); $token = OAuthUtil::parse_parameters($request); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; } /** * GET wrapper for oAuthRequest. */ function get ($url, $parameters = array()) { $response = $this->oAuthRequest($url, 'GET', $parameters); if ($this->format === 'json' && $this->decode_json) { } return $response; } /** * POST wrapper for oAuthRequest. */ function post ($url, $parameters = array()) { $response = $this->oAuthRequest($url, 'POST', $parameters); if ($this->format === 'json' && $this->decode_json) { } return $response; } /** * DELETE wrapper for oAuthReqeust. */ function delete ($url, $parameters = array()) { $response = $this->oAuthRequest($url, 'DELETE', $parameters); if ($this->format === 'json' && $this->decode_json) { } return $response; } /** * Format and sign an OAuth / API request */ function oAuthRequest($url, $method, $parameters) { if (strrpos($url, 'https://') !== 0 && strrpos($url, 'http://') !== 0) { $url = "{$this->host}{$url}.{$this->format}"; } $request = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters); $request->sign_request($this->sha1_method, $this->consumer, $this->token); switch ($method) { case 'GET': return $this->http($request->to_url(), 'GET'); default: return $this->http($request->get_normalized_http_url(), $method, $request->to_postdata()); } } /** * Make an HTTP request * * @return API results */ function http($url, $method, $postfields = NULL) { $this->http_info = array(); /* Curl settings */ curl_setopt($ci, CURLOPT_CONNECTTIMEOUT , $this->connecttimeout); curl_setopt($ci, CURLOPT_SSL_VERIFYPEER , $this->ssl_verifypeer); switch ($method) { case 'POST': if (!empty($postfields)) { } break; case 'DELETE': if (!empty($postfields)) { $url = "{$url}?{$postfields}"; } } $this->url = $url; return $response; } /** * Get the header info to store. */ function getHeader($ch, $header) { $this->http_header[$key] = $value; } } }
Es la clase para enviar el tweet junto con la OAuth.php ¡Gracias por la ayuda! ¡Saludos!
|
|
|
163
|
Programación / PHP / Problemas de horarios en el servidor.
|
en: 9 Julio 2013, 10:21 am
|
Buenas. Estoy intentando mandar un tweet mediante PHP... el caso es que en el localhost (horario GTM +1 madrid) funciona perfectamente, no obstante, a la hora de subirlo a un servidor que tiene como hora estados unidos es decir (GTM -5 , 6horas de diferencia con respecto al español) el tweet no es enviado, dado que las horas no coinciden.... Este es el código que uso. <?php require('twitteroauth.php'); // libreria define('_CONSUMER_KEY','datos....'); // consumer key define('_CONSUMER_SECRET','más datos...'); // consumer secret define('_OAUTH_TOKEN','datos....'); // access token define('_OAUTH_TOKEN_SECRET','datos....'); // access token secret function getConnectionWithAccessToken() { $connection = new TwitterOAuth(_CONSUMER_KEY, _CONSUMER_SECRET,_OAUTH_TOKEN, _OAUTH_TOKEN_SECRET); return $connection; } // Ejecutamos la conexión $connection = getConnectionWithAccessToken(); //Publicamos el mensaje en twitter $mensaje = "Aquí iría el mensaje bla bla bla."; $twitter= $connection->post('statuses/update', array('status' => $mensaje) ); ?>
Perdonad la precaución, dónde pone datos obviamente van los datos asociados a la cuenta... ¿Cómo puedo indicarle al servidor que la hora tiene que ser GTM+1 y no GTM-5? Gracias de antemano.
|
|
|
164
|
Programación / Desarrollo Web / Re: Restauración de código.
|
en: 6 Julio 2013, 12:16 pm
|
Me autoresponderé como los idiotas.
"'w+' Apertura para lectura y escritura; coloca el puntero al fichero al principio del fichero y trunca el fichero a longitud cero. Si el fichero no existe se intenta crear. "
En la página oficial nunca mencionaron que la w+ servía para sobrescribir el fichero... o al menos yo no veo dónde dice "Si el fichero existe se remplaza por otro ..."
Como sea, creo que ya está solucionado.
¡Muchas gracias!
|
|
|
165
|
Programación / Desarrollo Web / Restauración de código.
|
en: 6 Julio 2013, 10:29 am
|
Buenas, os comento, quería preguntar si alguien sabe si existe alguna forma de restaurar un código HTML/javascript en un determinado día / hora.
Me explico... Mi idea es la siguiente, tengo un formulario que mediante el método post, envía lo que se escribe a otra página. Como tal, tiene vulnerabilidades XSS... Mi idea es convertir eso en una forma de "etrenamiento" para la gente que se quiera pasar y hacer sus barbaridades dentro de la página.
El problema, es el siguiente, no voy a estar a cada rato eliminando el documento que se creo con el .php. No sé si me explico, cuando envias una cadena de caracteres en el formulario, pasa por el PHP, y si la página no existe, la crea... pues si hacen sus barbaridades, es obvio que los próximos usuarios que quieran probar XSS, no podrán por culpa de los anteriores, y yo no me veo capaz de estar a cada hora eliminando o restableciendo el código del documento que se creo.
Entonces la idea era, si existe alguna forma de restablecer ese código en un periodo determinado de tiempo, (lo del tiempo no hace falta pues sé como funciona y condicionarlo).
O otra forma (la cual desconozco y que seguramente exista (se me vino ahora a la cabeza)). Es que el .html que genera el .php se sobrescriba si ya existe.
Es decir, que si el php crea una página (ejemplo.html) y vuelven a reenviar el formulario (ejemplo.html sobrescriba al anterior ejemplo.html de está forma el código volvería a 0).
Gracias de antemano!
|
|
|
167
|
Comunicaciones / Redes / Convertir PC en servidor WEB.
|
en: 4 Julio 2013, 08:38 am
|
Buenas, por necesidad de aprender un poco de PHP, me vi obligado a usar un servidor para el propio pc (Xampp), por no estar ingresando en un host, y subir los archivos por FTP cada dos por tres. El caso, es que, me preguntaba, como podría enseñar al público, dicho servidor, y todo lo que hay en él... Desde una red local ya he comprobado que funciona, si meto la dirección IP local (192.168.1.103 en mi caso) ya sea desde el propio ordenador u otro, puedo visualizar el contenido. No obstante, si pongo la dirección IP, no la visualiza.
Entonces, ¿cómo abro el servidor web al público? ¿Qué consecuencias puede llevar? Quiero decir, tengo entendido que te podrían trollear de lo lindo... (en el sentido de seguridad).
Uso GNU/Linux... tampoco he encontrado mucha información acerca de lo que estoy buscando, salvo que por lo visto (y obviamente), como el router cambia la dirección IP, se debería usar una IP estática, para que no dejase de estar en funcionamiento.
Gracias de antemano!
|
|
|
168
|
Programación / PHP / Re: PHP dentro de javascript.
|
en: 1 Julio 2013, 20:03 pm
|
jajajaj ahora todo tiene sentido xD. Bue, para estas cosas hay que ponerse creativo xD. No se.. yo lo haría de 2 maneras:
Supongamos que tienes una archivo reto.php... El codigo que tienes, pero si se cumple (correcto), le envio una peticion ajax a un php con la respuesta, este la evalúa y si es correcta, retorna la url. Ejemplo: <?php if(!empty($_GET['respuesta'])){ if($_GET['respuesta']==='algo'){die('http://enlace_al_siguente_reto.com');} else{die('error');} } ?> <html> <head> </head> <body> <!-- Funcion para AJAX --> <script type="text/javascript" id="ajax"> function cargarReto(variable){ var xmlhttp; if (window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();} else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");} xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4 && xmlhttp.status==200){ var respuesta = xmlhttp.responseText; // Si la respuesta no es correcta alerta. if(respuesta==='error'){alert('Intento de h4ck -__-'); return false;} // Si es correcta redirigir. else{document.location=respuesta; return true;} }}; xmlhttp.open("GET","reto.php?respuesta="+variable,true); xmlhttp.send(); }; </script> <script type="text/javascript"> var ejemplo = "algo"; var ejemplo2 = document.Formulario.ejemplo2.value; if (ejemplo2 != ejemplo){ alert("incorrecto"); }else{ alert ("correcto"); cargarReto(ejemplo2); } </script> // resto del código, formularios, bla bla bla... </body> </html>
O, tambien puedes ofuscar el document location. Por ejemplo: <script type="text/javascript"> var ejemplo = "algo"; var ejemplo2 = "algo"; if (ejemplo2 != ejemplo){ alert("incorrecto"); }else{ alert ("correcto"); var _0x1f7d=["\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x67\x6F\x6F\x67\x6C\x65\x2E\x63\x6F\x6D"];document[_0x1f7d[0]]=_0x1f7d[1]; } // resto del código, formularios, bla bla bla...
Si se cumple, hará document.location=" http://www.google.com";http://javascriptobfuscator.com/Saludos Probé las dos, y funcionan perfectamente, muchísimas gracias. Me gustó la de ajax, aunque sinceramente no entiendo el código, quiero decir, sé lo que hace y lo que tengo que modificar para que pase lo que yo quiero, pero no sé que es realmente lo que está pasando, así que leeré un poco sobre ajax hasta entenderlo. Muchísimas gracias ^.^' y perdonad las molestias. POR CIERTO, EDITO:Me percaté que si fuerzas al condicional a poner una condición diferente, para pasar de nivel y burlar a la respuesta real, tira el error que pusiste en ajax diciendo intento de hack. Muchas gracias por ese detalle, se agradece mucho =P
|
|
|
169
|
Programación / PHP / Re: PHP dentro de javascript.
|
en: 1 Julio 2013, 18:58 pm
|
@DonVidela, es que #Aitor intenta evitar document.location para no enseñar la url a la que va a redireccionar. Entonces yo creo que lo mejor que lo haga todo por parte de server..
Saludos
El problema es que, si lo hago todo por parte del servidor, no se ve el código fuente, y por ende no se sabrá que se debe ingresar. Mi intención es que no hagan trampas saltandose todo la estructura, poniendo en el navegador a dónde está redireccionando el document.location Quizá debí haber aclarado que es para un Wargame... >_<
|
|
|
170
|
Programación / PHP / Re: PHP dentro de javascript.
|
en: 1 Julio 2013, 18:40 pm
|
No es posible por que PHP se ejecuta mucho antes que el javascript o el html.
PD: Van a ver igualmente a donde va a redireccionar por que pueden obligar al javascript a cumplir la condición forzosamente.
Saludos
No sé quién tiene razón, el chico de abajo dice que si se puede >_<' Referente a la postdata, sé que pueden forzar a cumplir la condición, pero es más fácil ver la "contraseña" a usar inspector elemento e igualar por ejemplo 1==1, para que se cumpla la condicion y pasar por la redirección. Gracias por la ayuda !
|
|
|
|
|
|
|