Pregunta

este estado tratando durante bastante tiempo y ahora necesitan ayuda. Básicamente tengo un archivo PHP que la base de datos de consultas y quiero cambiar la consulta basada en un nombre conectado a los usuarios.

¿Qué ocurre en mi sitio es que un usuario inicia sesión con Twitter Oauth y puedo mostrar sus datos (nombre de usuario de twitter, etc.). Tengo una base de datos que el usuario ha añadido información a y yo lo que me gustaría pasar es cuando el usuario inicia sesión con Twitter OAuth, que podría utilizar jQuery para llevar a los usuarios de usuario y actualizar la consulta MySQL para mostrar sólo los resultados donde el nombre_usuario = ese nombre particular de los usuarios.

En el momento de la consulta MySQL es:

"SELECT * FROM markers WHERE user_name = 'dave'"

He intentado algo como:

"SELECT * FROM markers WHERE user_name = '$user_name'"

Y en el archivo PHP en otro lugar tengo $ nombre_usuario = $ _POST [ 'nombre_usuario'] ;. En un archivo separado (aquella en la que el usuario es redirigido a después de que se conecten a través de Twitter) Tengo un poco de jQuery como esto:

$(document).ready(function(){
$.post('phpsqlinfo_resultb.php',{user_name:"<?PHP echo $profile_name?>"})});

$ nombre_perfil se ha definido anteriormente en esa página.

Yo sé que estoy haciendo algo mal con claridad, yo todavía estoy aprendiendo. ¿Hay una manera de lograr lo que quiero usando jQuery para publicar los usuarios nombre de usuario para el archivo PHP para cambiar la consulta MySQL para mostrar sólo los resultados relacionados con el usuario que ha iniciado sesión. He incluido el archivo PHP con la consulta a continuación :

    <?php
// create a new XML document
//$doc = domxml_new_doc('1.0');
$doc = new DomDocument('1.0');

//$root = $doc->create_element('markers');
//$root = $doc->append_child($root);
$root = $doc->createElement('markers');
$root = $doc->appendChild($root);
$table_id = 'marker';
$user_name = $_POST['user_name'];
// Make a MySQL Connection
include("phpsqlinfo_addrow.php");
    $result = mysql_query("SELECT * FROM markers WHERE user_name = '$user_name'")
    or die(mysql_error());
// process one row at a time
//header("Content-type: text/xml");
header('Content-type: text/xml; charset=utf-8');
while($row = mysql_fetch_assoc($result)) {
    // add node for each row
  $occ = $doc->createElement($table_id);
  $occ = $root->appendChild($occ);
  $occ->setAttribute('lat', $row['lat']);
  $occ->setAttribute('lng', $row['lng']);
  $occ->setAttribute('type', $row['type']);
  $occ->setAttribute('user_name', utf8_encode($row['user_name']));
  $occ->setAttribute('name', utf8_encode($row['name']));
  $occ->setAttribute('tweet', utf8_encode($row['tweet']));
  $occ->setAttribute('image', utf8_encode($row['image']));
} // while
$xml_string = $doc->saveXML();
$user_name2->response;
echo $xml_string;
?>

Esto es para su uso con un mapa de Google mashup im tratando de hacer. Muchas gracias si pueden ayudarme. Si mi pregunta no es lo suficientemente claro, por favor decir y voy a tratar de aclarar para usted. Estoy seguro de que esta es una solución simple, sólo estoy relativamente poca experiencia para hacerlo. Estado en esto durante dos días y me estoy quedando sin tiempo por desgracia.

¿Fue útil?

Solución

En primer lugar, debe escapar de la $ _POST vas a insertar directamente a la consulta:

'SELECT * FROM markers WHERE user_name = `' . mysql_real_escape_string($user_name) . '`';

Como Erik sugiere, no tirar por la ventana las advertencias más útiles -. Muy probablemente la respuesta será estallar a la derecha por delante y luego

Pero lo que no estoy muy seguro es de la misma forma que su mashup. Se podría conseguir mucho más fácil si usted acaba de hacer todas las cosas dentro de la propia php, javascript, omitiendo en absoluto. También puede ser que desee comprobar las devoluciones de llamada de OAuth - debe darle ID de Twitter o nombre de usuario

.

Otros consejos

No hay nada de malo en:

$result = mysql_query("SELECT * FROM markers WHERE user_name = '$user_name'");

Aparte de estar maduro para la inyección de SQL - que debería funcionar. Es posible que desee probar su consulta directamente en la base de datos y ver si los resultados son lo que esperas.

También me gustaría recomendar encender el informe de errores durante el desarrollo. Añadir las siguientes líneas a la parte superior de su documento:

error_reporting(E_ALL);
ini_set("display_errors", 1);

y que le ayudará a descubrir muchos errores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top