¿Cómo puedo obtener el valor del ID de la url?

Estoy tratando de hacer mi propio foros el uso de un tutorial. Ya he arreglado un buen montón de errores y tengo 1 a la izquierda para hacer.

Cuando se publique una respuesta en un hilo se va a guardar la respuesta en una base de datos MySQL. La respuesta tendrá un valor int que coincide con el identificador de subproceso respondió, llamado question_id.

Puedo conseguir mi código para obtener el id del hilo de la barra de URL.

Estas son las 2 líneas de código que debe hacer el trabajo:

$id = $_GET['id'];

$sql2="INSERT INTO $tbl_name(question_id, a_id, a_name, a_email, a_answer, a_datetime)VALUES('$id', '$Max_id', '$a_name', '$a_email', '$a_answer', '$datetime')";

Y este es el archivo completo add_answer.php

<?php

$host="XXXXXX"; //Host name
$username="XXXXXX"; //Mysql username
$password="XXXXXX"; //Mysql password
$db_name="XXXXXX"; //Database name
$tbl_name="XXXXXX"; //Table name

//Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

//Get value of id that sent from hidden field
$id = $_GET['id'];
var_dump($id);

//Find highest answer number.
$sql="SELECT MAX(a_id) AS Maxa_id FROM $tbl_name WHERE question_id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);

//$result=mysql_query($sql) or die(mysql_error());

//add + 1 to highest answer number and keep it in variable name "$Max_id". if there no answer yet set it = 1
if ($rows) {
    $Max_id = $rows['Maxa_id']+1;
}
else {
    $Max_id = 1;
}

//get values that sent from form
$a_name=$_POST['a_name'];
$a_email=$_POST['a_email'];
$a_answer=$_POST['a_answer'];

$datetime=date("d/m/y H:i:s"); //create date and time

//Insert answer
$sql2="INSERT INTO $tbl_name(question_id, a_id, a_name, a_email, a_answer, a_datetime)VALUES('$id', '$Max_id', '$a_name', '$a_email', '$a_answer', '$datetime')";
$result2=mysql_query($sql2) or die(mysql_error());

if($result2)
{
    echo "Successful<BR>";
    echo "<meta http-equiv='refresh' content='4;url=index.php?content=main_forum' />";

    //If added new answer, add value +1 in reply column
    $tbl_name2="forum_question";
    $sql3="UPDATE $tbl_name2 SET reply='$Max_id' WHERE id='$id'";
    $result3=mysql_query($sql3);

}
else {
    echo "An error as occured. Please report this to administrator. ID: FAA01.";
}

mysql_close();
?>
$_GET[‘id’] debe estar trabajando si tu URL es como /post.php?id=21, ¿cómo tu URL?
Su código es vulnerable a inyecciones SQL, php.net/manual/en/security.database.sql-injection.php.
Realmente espero que usted no lo está haciendo así que… si se incluye directamente el ‘id’ variable en su consulta de sql, tu foro no va a durar mucho tiempo…
Por favor enviar la dirección URL se pasa a la secuencia de comandos, de lo contrario no podemos saber si su formato correcto. Su dirección URL debe verse como www.something.com/file.php ?id=ndonde n es el question_id desea pasado, entonces $_GET[«id»] debería funcionar

OriginalEl autor Mitchell Verbeek | 2011-11-14

4 Kommentare

  1. 2

    su $_GET[id] deben ser desinfectados antes de tocar mysql con ella. Tal y como está ahora mismo está en muy real danager de un ataque a su base de datos. Yo sugiero utilizar PDO

    Es una mierda para volver a aprender algo, pero si usted está aprendiendo, su mejor hacerlo a la derecha.

    Cuanto a tu pregunta…no sé. Me gustaría tratar de echo $sql2; y asegurarse de que la consulta se ve a la derecha. También print_r($_GET) para ver a su obtener de la matriz.

    OriginalEl autor David Houde

  2. 2

    Debe depurar una cosa a la vez! Usted dice:

    Puedo conseguir mi código para obtener el id del hilo de la barra de url.

    así que el primer lugar para buscar es en su navegador la ubicación de la barra, donde el es la dirección URL. ¿Por qué importa la próxima cientos de líneas de código si el primero no es correcto? Si el IDENTIFICADOR de subproceso es de 999 y desea que este código para obtener tales ID:

    $id = $_GET['id'];

    … tienes que ver id=999 en la URL, después de la ? símbolo (que es obligatorio) y antes de la # símbolo (que es opcional).

    Si el IDENTIFICADOR no está aquí, usted debe recibir un aviso:

    Notice: Undefined index: id

    Si no, usted no ha configurado PHP correctamente. La forma más sencilla es encontrar su php.ini archivo, conjunto de estas directivas:

    error_reporting = E_ALL
    display_errors = On

    … y reiniciar su servidor web.

    Por último, aprender a utilizar var_dump().

    su explicación guardado mi tiempo gracias

    OriginalEl autor Álvaro González

  3. 2
    1. Hace $_GET['id'] existen? Como en, realidad presente en la URL? ¿Cuál es la dirección URL exacta que utiliza? Doble comprobación de que no hay ningún letras mayúsculas en el camino, ya que al parecer la mezcla de casos, mucho (sugerencia: use sólo letras minúsculas en el código)

    2. Aprender acerca de addslashes y mysql_real_escape_string, de lo contrario alguien VA a reducir el servidor a un fundido naufragio.

    3. Tiene redundante comprobación de errores.

      $result2=mysql_query($sql2) or die(mysql_error());
      //...
      if( $result2) {...} else {...}

    Que el último bit es redundante, ya que si $result2 es falsa, entonces es que ya murió.

    OriginalEl autor Niet the Dark Absol

  4. 1

    Si el formulario es enviado por post usted debe obtener el id con:

    $id = $_POST['id'];
    Trabajó para mí gracias buen trabajo

    OriginalEl autor scube

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea