w3big.com
Latest web development tutorials
×

Python curso

Python Curso básico Python breve introducción Python Medio Ambiente para construir Python codificación china Python Gramática básica Python Tipos de variables Python operadores Python Las sentencias condicionales Python bucles Python While circulación Python for circulación Python bucle anidado Python break declaraciones Python continue declaraciones Python pass declaraciones Python digital Python cadena Python lista Python tupla Python diccionario Python Fecha y Hora Python función Python módulo Python expediente I/O Python File camino Python El manejo de excepciones

Python Tutorial avanzado

Python Orientado a Objetos Python Las expresiones regulares Python CGI programa Python MySQL Python Programación de la cadena Python SMTP Python multihilo Python XMLresolver Python GUI Tkinter Python2.x & Python3.x diferencias entre versiones Python IDE Python JSON Python 100 casos

la programación CGI Python

¿Qué es CGI

CGI actualmente mantenido por NCSA, NCSA CGI se define como sigue:

CGI (Common Gateway Interface), Common Gateway Interface, que es un programa que se ejecuta en el servidor, como por ejemplo: servidor HTTP, la interfaz del cliente proporcionando la misma página HTML.


navegación web

Para entender mejor cómo funciona CGI, podemos hacer clic en un enlace en una página web o URL del proceso:

  • 1, utilizar el navegador para acceder a la URL y conectarse con el servidor web HTTP.
  • 2, el servidor Web recibe el mensaje de solicitud será analizada URL y buscar los archivos a los que accede en el servidor si hay, si hay que devolver el contenido del archivo, de lo contrario, devuelve un mensaje de error.
  • 3, el navegador recibe la información desde el servidor y muestra los mensajes de error o de archivos recibidos.

Los programas CGI pueden ser una secuencia de comandos de Python, Perl guión, script de shell, los programas de C o C ++.


Gráfico CGI

cgiarch


configuración del servidor web y el apoyo

Antes de realizar la programación CGI, asegúrese de que el servidor Web se ha configurado para soportar CGI y controlador CGI.

Apache soporta la configuración CGI:

Configurar el directorio CGI:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

Todo servidor HTTP para ejecutar programas CGI se almacenan en un directorio preconfigurado. Este directorio se llama el directorio CGI, y por convención, se nombra directorio / var / www / cgi-bin.

archivo CGI extensión .cgi, pitón también puede utilizar la extensión .py.

Por defecto, la configuración del servidor Linux corriendo directorio cgi-bin es / var / www.

Si desea especificar un directorio diferente para ejecutar scripts CGI, puede modificar el archivo de configuración httpd.conf de la siguiente manera:

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options +ExecCGI
   Order allow,deny
   Allow from all
</Directory>

Añadir .py AddHandler sufijo, por lo que podemos acceder al archivo de secuencia de comandos Python .py final:

AddHandler cgi-script .cgi .pl .py

El primer programa CGI

Utilizamos Python para crear el primer programa CGI llamado hello.py, el archivo se encuentra en el directorio / var / www / cgi-bin, de la siguiente manera:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

print "Content-type:text/html"
print                               # 空行,告诉服务器结束头部
print '<html>'
print '<head>'
print '<meta charset="utf-8">'
print '<title>Hello Word - 我的第一个 CGI 程序!</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! 我是来自本教程的第一CGI程序</h2>'
print '</body>'
print '</html>'

Después de guardar el hello.py modificación del archivo, modificar los permisos de archivo a 755:

chmod 755 hello.py 

El programa anterior se muestra en el navegador para acceder a los resultados son los siguientes:

El hello.py este script es un simple script en Python, el guión de la primera línea de salida "Content-type: text / html" para enviar al tipo de navegador y decirle al navegador para visualizar el contenido como "text / html".

La salida de impresión con una línea en blanco se utiliza para indicar el extremo del servidor de la información de cabecera.


cabecera HTTP

el contenido del archivo en hello.py: parte de la cabecera HTTP es "Content-type text / html", que será enviado al tipo de contenido del navegador le dice a los archivos del navegador.

formato de la cabecera HTTP es el siguiente:

HTTP 字段名: 字段内容

Por ejemplo:

Content-type: text/html

En la siguiente tabla se describe la información de los programas CGI de cabecera HTTP se utilizan a menudo:

cabeza descripción
Content-type: MIME entidad correspondiente a la solicitud de información. Por ejemplo: Content-type: text / html
Expira: Fecha fecha y tiempo de respuesta caducado
Localización: URL Para redirigir el destinatario de una solicitud no ubicación URL para completar la solicitud o la identificación de nuevos recursos
-Modificado: Fecha recurso solicitado fue modificada por última vez
Content-Length: N solicitud de Content-Length
Set-Cookie: String http configuración de cookies

Variables de entorno CGI

Todos los programas CGI han recibido las siguientes variables de entorno, que desempeñaron un papel importante en el programa CGI:

nombre de la variable descripción
CONTENT_TYPE Este valor indica que la variable de entorno para el tipo MIME de transferencia de información. En la actualidad, las variables de entorno son generalmente CONTENT_TYPE: urlencoded-x-www-formulario de solicitud /, dijo que los datos del formulario HTML.
CONTENT_LENGTH Si la información del servidor y el modo de transferencia de programa CGI es POST, aunque el entorno STDIN variables el número de bytes que se pueden leer datos válidos de la norma. Esta variable de entorno al leer los datos de entrada debe ser utilizado.
HTTP_COOKIE contenido de las cookies dentro del cliente.
HTTP_USER_AGENT Proporcionar información incluye el número de versión del navegador del cliente u otros datos de propiedad.
PATH_INFO El valor de esta variable de entorno indica el nombre del programa CGI inmediatamente después de la información de la ruta adicional. A menudo aparece como un programa argumento CGI.
QUERY_STRING Si la información del servidor y el modo de transferencia de información de programa CGI es GET, el valor de esta variable de entorno, incluso si se aprueba. Esta información es seguido por el nombre del programa CGI, tanto en el medio con un signo de interrogación "?" Separador.
REMOTE_ADDR El valor de esta variable de entorno es la dirección IP del cliente envía una petición, por ejemplo, el 192.168.1.67 anteriormente. Este valor está siempre presente. Y es la necesidad de proporcionar al cliente Web para el identificador único del servidor Web se puede utilizar en los programas CGI para distinguir entre diferentes cliente Web.
REMOTE_HOST El valor de esta variable de entorno contiene el nombre de host del cliente solicitante de CGI. Si no lo hace usted quiere comprobar, no es necesario definir esta variable de entorno.
REQUEST_METHOD Proporciona un método llamado guión. Para HTTP script / 1.0 protocolo sólo GET y POST significativa.
SCRIPT_FILENAME La ruta completa a los scripts CGI
SCRIPT_NAME El nombre de la secuencia de comandos CGI
NOMBRE_SERVIDOR Este es el nombre de host, alias o dirección IP de su servidor web.
SERVER_SOFTWARE El valor de esta variable de entorno contiene el nombre del programa CGI llamada y número de versión del servidor HTTP. Por ejemplo, el valor anterior de Apache / 2.2.14 (Unix)

Aquí es una simple salida de variables de entorno CGI script CGI:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# filename:test.py

import os

print "Content-type: text/html"
print
print "<meta charset=\"utf-8\">"
print "<b>环境变量</b><br>";
print "<ul>"
for key in os.environ.keys():
    print "<li><span style='color:green'>%30s </span> : %s </li>" % (key,os.environ[key])
print "</ul>"

Guarde el test.py puntos por encima, y ​​modificar los permisos de archivo a 755, los resultados de ejecución son los siguientes:


Métodos GET y POST

cliente del navegador al servidor para entregar información de dos maneras, tanto del método que se métodos GET y POST.

Utilice el método GET de la transferencia de datos

GET método para enviar al usuario información codificada al servidor, la información de datos está contenida en la URL de la petición de la página de número dividido de la siguiente manera "?":

http://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2
Peticiones GET sobre algunos de los otros comentarios:
  • GET solicitud puede ser almacenado en caché
  • solicitud GET permanece en el historial del navegador
  • Peticiones GET se pueden marcar
  • Peticiones GET no se deben utilizar cuando se trata de datos sensibles
  • Peticiones GET tienen restricciones de longitud
  • Peticiones GET sólo se deben usar para recuperar datos

Ejemplos de URL simple: Obtiene el método

El siguiente es un enlace simple, utilizando el método GET para enviar dos parámetros para hello_get.py programa:

/cgi-bin/test.py?name=本教程&url=http://www.w3big.com

Un archivo de código hello_get.py:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# filename:test.py

# CGI处理模块
import cgi, cgitb 

# 创建 FieldStorage 的实例化
form = cgi.FieldStorage() 

# 获取数据
site_name = form.getvalue('name')
site_url  = form.getvalue('url')

print "Content-type:text/html"
print
print "<html>"
print "<head>"
print "<meta charset=\"utf-8\">"
print "<title>本教程 CGI 测试实例</title>"
print "</head>"
print "<body>"
print "<h2>%s官网:%s</h2>" % (site_name, site_url)
print "</body>"
print "</html>"

Después de guardar el hello_get.py modificación del archivo, modificar los permisos de archivo a 755:

chmod 755 hello_get.py 

El navegador solicita de salida:

Ejemplos de forma sencilla: GET método

La siguiente es una de dos enviar los datos al servidor utilizando el método GET a través de un formulario HTML, presentado el mismo archivo hello_get.py script del servidor, código hello_get.html es el siguiente:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="/cgi-bin/hello_get.py" method="get">
站点名称: <input type="text" name="name">  <br />

站点 URL: <input type="text" name="url" />
<input type="submit" value="提交" />
</form>
</body>
</html>

De forma predeterminada, el directorio cgi-bin sólo puede almacenar un archivo de secuencia de comandos, que estará bajo el directorio de prueba, modificar el archivo de permisos hello_get.html almacenan como 755:

chmod 755 hello_get.html

presentación Gif es el siguiente:

Utilizar el método POST para pasar datos

Utilizando el método POST para pasar los datos al servidor es más seguro y fiable, como alguna información confidencial, como contraseñas de los usuarios necesitan utilizar POST para transferir datos.

El siguiente es también hello_get.py, sino que también puede manejar los datos del formulario POST enviados por el navegador:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# CGI处理模块
import cgi, cgitb 

# 创建 FieldStorage 的实例化
form = cgi.FieldStorage() 

# 获取数据
site_name = form.getvalue('name')
site_url  = form.getvalue('url')

print "Content-type:text/html"
print
print "<html>"
print "<head>"
print "<meta charset=\"utf-8\">"
print "<title>本教程 CGI 测试实例</title>"
print "</head>"
print "<body>"
print "<h2>%s官网:%s</h2>" % (site_name, site_url)
print "</body>"
print "</html>"

A continuación se presenta un formulario para enviar datos a la secuencia de comandos del servidor en los hello_get.py método POST (method = "post"):

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="/cgi-bin/hello_get.py" method="post">
站点名称: <input type="text" name="name">  <br />

站点 URL: <input type="text" name="url" />
<input type="submit" value="提交" />
</form>
</body>
</html>

presentación Gif es el siguiente:

programa CGI para pasar datos a través de la casilla de verificación

casilla de verificación utilizado para enviar uno o más datos de la opción, el código HTML es el siguiente:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="/cgi-bin/checkbox.py" method="POST" target="_blank">
<input type="checkbox" name="w3big" value="on" /> 本教程
<input type="checkbox" name="google" value="on" /> Google
<input type="submit" value="选择站点" />
</form>
</body>
</html>

Un archivo de código checkbox.py:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 引入 CGI 处理模块 
import cgi, cgitb 

# 创建 FieldStorage的实例 
form = cgi.FieldStorage() 

# 接收字段数据
if form.getvalue('google'):
   google_flag = "是"
else:
   google_flag = "否"

if form.getvalue('w3big'):
   w3big_flag = "是"
else:
   w3big_flag = "否"

print "Content-type:text/html"
print
print "<html>"
print "<head>"
print "<meta charset=\"utf-8\">"
print "<title>本教程 CGI 测试实例</title>"
print "</head>"
print "<body>"
print "<h2> 本教程是否选择了 : %s</h2>" % w3big_flag
print "<h2> Google 是否选择了 : %s</h2>" % google_flag
print "</body>"
print "</html>"

Modificar los permisos checkbox.py:

chmod 755 checkbox.py

Acceso a la navegación GIF gráficos de presentación:

la transferencia de datos a través de la radio programa CGI

Sólo en la radio transferir datos a un servidor, el código HTML es el siguiente:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="/cgi-bin/radiobutton.py" method="post" target="_blank">
<input type="radio" name="site" value="w3big" /> 本教程
<input type="radio" name="site" value="google" /> Google
<input type="submit" value="提交" />
</form>
</body>
</html>

código de script radiobutton.py es el siguiente:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 引入 CGI 处理模块 
import cgi, cgitb 

# 创建 FieldStorage的实例 
form = cgi.FieldStorage() 

# 接收字段数据
if form.getvalue('site'):
   site = form.getvalue('site')
else:
   site = "提交数据为空"

print "Content-type:text/html"
print
print "<html>"
print "<head>"
print "<meta charset=\"utf-8\">"
print "<title>本教程 CGI 测试实例</title>"
print "</head>"
print "<body>"
print "<h2> 选中的网站是 %s</h2>" % site
print "</body>"
print "</html>"

Modificar los permisos radiobutton.py:

chmod 755 radiobutton.py

Acceso a la navegación GIF gráficos de presentación:

la transferencia de datos a través de área de texto programa CGI

pase Textarea varias filas de datos al servidor, código HTML es como sigue:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="/cgi-bin/textarea.py" method="post" target="_blank">
<textarea name="textcontent" cols="40" rows="4">
在这里输入内容...
</textarea>
<input type="submit" value="提交" />
</form>
</body>
</html>

textarea.py código de script es el siguiente:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 引入 CGI 处理模块 
import cgi, cgitb 

# 创建 FieldStorage的实例 
form = cgi.FieldStorage() 

# 接收字段数据
if form.getvalue('textcontent'):
   text_content = form.getvalue('textcontent')
else:
   text_content = "没有内容"

print "Content-type:text/html"
print
print "<html>"
print "<head>";
print "<meta charset=\"utf-8\">"
print "<title>本教程 CGI 测试实例</title>"
print "</head>"
print "<body>"
print "<h2> 输入的内容是:%s</h2>" % text_content
print "</body>"
print "</html>"

Modificar los permisos textarea.py:

chmod 755 textarea.py

Acceso a la navegación GIF gráficos de presentación:

Desplegable datos pasan por el programa CGI.

código de la caja desplegable HTML de la siguiente manera:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="/cgi-bin/dropdown.py" method="post" target="_blank">
<select name="dropdown">
<option value="w3big" selected>本教程</option>
<option value="google">Google</option>
</select>
<input type="submit" value="提交"/>
</form>
</body>
</html>

código de script dropdown.py como sigue:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 引入 CGI 处理模块 
import cgi, cgitb 

# 创建 FieldStorage的实例 
form = cgi.FieldStorage() 

# 接收字段数据
if form.getvalue('dropdown'):
   dropdown_value = form.getvalue('dropdown')
else:
   dropdown_value = "没有内容"

print "Content-type:text/html"
print
print "<html>"
print "<head>"
print "<meta charset=\"utf-8\">"
print "<title>本教程 CGI 测试实例</title>"
print "</head>"
print "<body>"
print "<h2> 选中的选项是:%s</h2>" % dropdown_value
print "</body>"
print "</html>"

Modificar los permisos dropdown.py:

chmod 755 dropdown.py

Acceso a la navegación GIF gráficos de presentación:


CGI se utiliza Cookies

protocolo http en un gran inconveniente es erróneo juzgar la identidad de un usuario, que dan a los programadores una gran cantidad de inconvenientes, pero aparece la función de cookies compensaba esta deficiencia.

cookie que se accede a la secuencia de comandos mientras el cliente a través del navegador del cliente en el disco duro del cliente para escribir registros de datos, recuperar datos cuando un cliente visita la siguiente secuencia de comandos, a fin de lograr la función de determinar la identidad, galleta utiliza comúnmente en la verificación de identidad.

la sintaxis de la galleta

cookies HTTP se envía a través de la cabecera HTTP para lograr, tuvo que transferir archivos, sintáctica de cabecera Set-Cookie es el siguiente:

Set-cookie:name=name;expires=date;path=path;domain=domain;secure 
  • name = nombre: para ajustar el valor de la cookie (nombre no puede ser utilizado "," y "," número), cuando hay varios valores de nombre ";" para separar, por ejemplo: nombre1 = nombre1, nombre2 = nombre2 ; nombre3 = nombre3.
  • expira = Fecha: Galleta de la fecha de caducidad en el formato: expira = "Wdy, DD HH Lu-AAAA: MM: SS"
  • path = camino: el camino trazado soporte para cookies, si la ruta es una ruta, la cookie para todos los archivos y subdirectorios de la entrada de directorio en vigor, por ejemplo: path = "/ cgi-bin /", si la ruta es un archivo, galleta se refiere a la entrada en vigor de este archivo, por ejemplo: path = "/ cgi-bin / cookie.cgi".
  • domain = Dominio: el nombre de dominio de la cookie es válida, por ejemplo: domain = "www.w3big.com"
  • asegurar: Si se da esta bandera, que la cookie sólo puede ser transmitido a través del servidor https protocolo SSL.
  • cookie se recibió mediante el establecimiento de variables de entorno HTTP_COOKIE logra, programas CGI pueden obtener información mediante la recuperación de la variable de galletas.

ajustes de cookies

Ajustes de cookies es muy simple, galleta se enviarán por separado en el encabezado HTTP. El ejemplo siguiente define el nombre y termina en una cookie:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 
print 'Content-Type: text/html'
print 'Set-Cookie: name="本教程";expires=Wed, 28 Aug 2016 18:30:00 GMT'
print
print """
<html>
	<head>
		<meta charset="utf-8">
		<title>本教程(w3big.com)</title>
	</head>
    <body>
        <h1>Cookie set OK!</h1>
    </body>
</html>
"""

Guarde el código anterior para cookie_set.py, y modificar los permisos cookie_set.py:

chmod 755 cookie_set.py

Los ejemplos anteriores usan la cabecera Set-Cookie para establecer la información de la galleta, galleta opciones establecen otros atributos, como la expiración de tiempo expira, el dominio de dominio, Ruta Ruta. Esta información se proporciona: Antes de "Content-type text / html".


Recuperación de información de la galleta

Cookie de la página de recuperación de información es muy simple, en el CGI variables de entorno HTTP_COOKIE, el formato de almacenamiento es de la siguiente información de cookie se almacena:

key1=value1;key2=value2;key3=value3....

Aquí es un programa CGI sencilla para recuperar información de las cookies:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 导入模块
import os
import Cookie

print "Content-type: text/html"
print

print """
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<h1>读取cookie信息</h1>
"""

if 'HTTP_COOKIE' in os.environ:
    cookie_string=os.environ.get('HTTP_COOKIE')
    c=Cookie.SimpleCookie()
    c.load(cookie_string)

    try:
        data=c['name'].value
        print "cookie data: "+data+"<br>"
    except KeyError:
        print "cookie 没有设置或者已过去<br>"
print """
</body>
</html>

"""

Guarde el código anterior para cookie_get.py, y modificar los permisos cookie_get.py:

chmod 755 cookie_get.py

Más color configuración Gif galletas son los siguientes:

Ejemplos de la carga de archivos

archivo de configuración HTML para cargar necesitan para establecer el atributo enctype en multipart / form-data, el código de la siguiente manera:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
 <form enctype="multipart/form-data" 
                     action="/cgi-bin/save_file.py" method="post">
   <p>选中文件: <input type="file" name="filename" /></p>
   <p><input type="submit" value="上传" /></p>
   </form>
</body>
</html>

código de archivo de script save_file.py es el siguiente:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import cgi, os
import cgitb; cgitb.enable()

form = cgi.FieldStorage()

# 获取文件名
fileitem = form['filename']

# 检测文件是否上传
if fileitem.filename:
   # 设置文件路径 
   fn = os.path.basename(fileitem.filename)
   open('/tmp/' + fn, 'wb').write(fileitem.file.read())

   message = '文件 "' + fn + '" 上传成功'
   
else:
   message = '文件没有上传'
   
print """\
Content-Type: text/html\n
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
   <p>%s</p>
</body>
</html>
""" % (message,)

Guarde el código anterior para save_file.py, y modificar los permisos save_file.py:

chmod 755 save_file.py

Más color configuración Gif galletas son los siguientes:

Si se está utilizando Unix / Linux, debe reemplazar el separador de archivos en la ventana sólo tendrá que utilizar la declaración abierta () puede ser:

fn = os.path.basename(fileitem.filename.replace("\\", "/" ))

cuadro de diálogo Descarga de archivos

Creamos archivo foo.txt en el directorio actual para descargar el programa.

Descargar el archivo mediante el establecimiento de la información de cabecera HTTP para poner en práctica el código de función es la siguiente:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# HTTP 头部
print "Content-Disposition: attachment; filename=\"foo.txt\"";
print
# 打开文件
fo = open("foo.txt", "rb")

str = fo.read();
print str

# 关闭文件
fo.close()

两个鬼故事陈飞宇苏映雪全文免费阅读完结版陕西省国土资源局通用股份软装馆起什么名字比较好博达教育51avi2021牛年女宝宝起名绝色妖娆鬼医至尊qq概念版魔景输入中文名字起英文名范姓起名字绝世高手陈扬网游之太古初剑鼠年起名宋姓男孩风烟望五津奴儿七七啊v天堂姓曹属鼠起个名字男孩子起名看什么书五行属金的男生起名常用字库男孩起名名字姓石科技公司起名广州张姓猪年婴儿起名大全迷魂党中文名起英文名称五行属金的男孩取名起名大全常用字库怎么注册微信号恶魔高校第三季郑氏起名女婴儿少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化