El problema es que estas llamando a la variable con el valor.
$lima = datos
y lo que creo que quieres es:
$ciudad = lima
Por lo tanto el codigo quedaria asi:
Código PHP:
Ver original<form action="datos.php" method="post">
<h4>Ingrese sus datos</h4><br>
nombre:<br>
<input type="text" name="nombre"><br>
dni:<br>
<input type="text" name="dni"><br>
<input type="hidden" name="ciudad" value="<?php echo $_GET['ciudad'] ?>">
<input type="submit">
</form>
y en
datos.php:
Código PHP:
Ver original<?php
$ciudad = [COLOR="red"]$_POST["ciudad"][/COLOR];
$nombre =$_POST["nombre"];
$dni =$_POST["dni"];
La variable (ciudad) viene por GET (parametro de la URL).
El resto de datos (nombre y dni) los introduce el usuario en el formulario.