CARIA.1.0.0

Restruct all repositories
Add :
- Files UserWebSite
- IA openCV Tuto
- Alphabot docs for first maquette
This commit is contained in:
ccunatbrule
2023-02-12 12:24:39 +01:00
parent 1f9312201e
commit 0a6ce8df24
61 changed files with 989 additions and 375 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,82 @@
import RPi.GPIO as GPIO
import time
class AlphaBot(object):
def __init__(self,in1=12,in2=13,ena=6,in3=20,in4=21,enb=26):
self.IN1 = in1
self.IN2 = in2
self.IN3 = in3
self.IN4 = in4
self.ENA = ena
self.ENB = enb
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(self.IN1,GPIO.OUT)
GPIO.setup(self.IN2,GPIO.OUT)
GPIO.setup(self.IN3,GPIO.OUT)
GPIO.setup(self.IN4,GPIO.OUT)
GPIO.setup(self.ENA,GPIO.OUT)
GPIO.setup(self.ENB,GPIO.OUT)
self.forward()
self.PWMA = GPIO.PWM(self.ENA,500)
self.PWMB = GPIO.PWM(self.ENB,500)
self.PWMA.start(50)
self.PWMB.start(50)
def forward(self):
GPIO.output(self.IN1,GPIO.HIGH)
GPIO.output(self.IN2,GPIO.LOW)
GPIO.output(self.IN3,GPIO.LOW)
GPIO.output(self.IN4,GPIO.HIGH)
def stop(self):
GPIO.output(self.IN1,GPIO.LOW)
GPIO.output(self.IN2,GPIO.LOW)
GPIO.output(self.IN3,GPIO.LOW)
GPIO.output(self.IN4,GPIO.LOW)
def backward(self):
GPIO.output(self.IN1,GPIO.LOW)
GPIO.output(self.IN2,GPIO.HIGH)
GPIO.output(self.IN3,GPIO.HIGH)
GPIO.output(self.IN4,GPIO.LOW)
def left(self):
GPIO.output(self.IN1,GPIO.LOW)
GPIO.output(self.IN2,GPIO.LOW)
GPIO.output(self.IN3,GPIO.LOW)
GPIO.output(self.IN4,GPIO.HIGH)
def right(self):
GPIO.output(self.IN1,GPIO.HIGH)
GPIO.output(self.IN2,GPIO.LOW)
GPIO.output(self.IN3,GPIO.LOW)
GPIO.output(self.IN4,GPIO.LOW)
def setPWMA(self,value):
self.PWMA.ChangeDutyCycle(value)
def setPWMB(self,value):
self.PWMB.ChangeDutyCycle(value)
def setMotor(self, left, right):
if((right >= 0) and (right <= 100)):
GPIO.output(self.IN1,GPIO.HIGH)
GPIO.output(self.IN2,GPIO.LOW)
self.PWMA.ChangeDutyCycle(right)
elif((right < 0) and (right >= -100)):
GPIO.output(self.IN1,GPIO.LOW)
GPIO.output(self.IN2,GPIO.HIGH)
self.PWMA.ChangeDutyCycle(0 - right)
if((left >= 0) and (left <= 100)):
GPIO.output(self.IN3,GPIO.HIGH)
GPIO.output(self.IN4,GPIO.LOW)
self.PWMB.ChangeDutyCycle(left)
elif((left < 0) and (left >= -100)):
GPIO.output(self.IN3,GPIO.LOW)
GPIO.output(self.IN4,GPIO.HIGH)
self.PWMB.ChangeDutyCycle(0 - left)

View File

@@ -0,0 +1,239 @@
#!/usr/bin/python
# -*- coding:utf-8 -*-
import RPi.GPIO as GPIO
import time
CS = 5
Clock = 25
Address = 24
DataOut = 23
class TRSensor(object):
def __init__(self,numSensors = 5):
self.numSensors = numSensors
self.calibratedMin = [0] * self.numSensors
self.calibratedMax = [1023] * self.numSensors
self.last_value = 0
"""
Reads the sensor values into an array. There *MUST* be space
for as many values as there were sensors specified in the constructor.
Example usage:
unsigned int sensor_values[8];
sensors.read(sensor_values);
The values returned are a measure of the reflectance in abstract units,
with higher values corresponding to lower reflectance (e.g. a black
surface or a void).
"""
def AnalogRead(self):
value = [0,0,0,0,0,0]
#Read Channel0~channel4 AD value
for j in range(0,6):
GPIO.output(CS, GPIO.LOW)
for i in range(0,4):
#sent 4-bit Address
if(((j) >> (3 - i)) & 0x01):
GPIO.output(Address,GPIO.HIGH)
else:
GPIO.output(Address,GPIO.LOW)
#read MSB 4-bit data
value[j] <<= 1
if(GPIO.input(DataOut)):
value[j] |= 0x01
GPIO.output(Clock,GPIO.HIGH)
GPIO.output(Clock,GPIO.LOW)
for i in range(0,6):
#read LSB 8-bit data
value[j] <<= 1
if(GPIO.input(DataOut)):
value[j] |= 0x01
GPIO.output(Clock,GPIO.HIGH)
GPIO.output(Clock,GPIO.LOW)
#no mean ,just delay
for i in range(0,6):
GPIO.output(Clock,GPIO.HIGH)
GPIO.output(Clock,GPIO.LOW)
# time.sleep(0.0001)
GPIO.output(CS,GPIO.HIGH)
return value[1:]
"""
Reads the sensors 10 times and uses the results for
calibration. The sensor values are not returned; instead, the
maximum and minimum values found over time are stored internally
and used for the readCalibrated() method.
"""
def calibrate(self):
max_sensor_values = [0]*self.numSensors
min_sensor_values = [0]*self.numSensors
for j in range(0,10):
sensor_values = self.AnalogRead();
for i in range(0,self.numSensors):
# set the max we found THIS time
if((j == 0) or max_sensor_values[i] < sensor_values[i]):
max_sensor_values[i] = sensor_values[i]
# set the min we found THIS time
if((j == 0) or min_sensor_values[i] > sensor_values[i]):
min_sensor_values[i] = sensor_values[i]
# record the min and max calibration values
for i in range(0,self.numSensors):
if(min_sensor_values[i] > self.calibratedMin[i]):
self.calibratedMin[i] = min_sensor_values[i]
if(max_sensor_values[i] < self.calibratedMax[i]):
self.calibratedMax[i] = max_sensor_values[i]
"""
Returns values calibrated to a value between 0 and 1000, where
0 corresponds to the minimum value read by calibrate() and 1000
corresponds to the maximum value. Calibration values are
stored separately for each sensor, so that differences in the
sensors are accounted for automatically.
"""
def readCalibrated(self):
value = 0
#read the needed values
sensor_values = self.AnalogRead();
for i in range (0,self.numSensors):
denominator = self.calibratedMax[i] - self.calibratedMin[i]
if(denominator != 0):
value = (sensor_values[i] - self.calibratedMin[i])* 1000 / denominator
if(value < 0):
value = 0
elif(value > 1000):
value = 1000
sensor_values[i] = value
print("readCalibrated",sensor_values)
return sensor_values
"""
Operates the same as read calibrated, but also returns an
estimated position of the robot with respect to a line. The
estimate is made using a weighted average of the sensor indices
multiplied by 1000, so that a return value of 0 indicates that
the line is directly below sensor 0, a return value of 1000
indicates that the line is directly below sensor 1, 2000
indicates that it's below sensor 2000, etc. Intermediate
values indicate that the line is between two sensors. The
formula is:
0*value0 + 1000*value1 + 2000*value2 + ...
--------------------------------------------
value0 + value1 + value2 + ...
By default, this function assumes a dark line (high values)
surrounded by white (low values). If your line is light on
black, set the optional second argument white_line to true. In
this case, each sensor value will be replaced by (1000-value)
before the averaging.
"""
def readLine(self, white_line = 0):
sensor_values = self.readCalibrated()
avg = 0
sum = 0
on_line = 0
for i in range(0,self.numSensors):
value = sensor_values[i]
if(white_line):
value = 1000-value
# keep track of whether we see the line at all
if(value > 200):
on_line = 1
# only average in values that are above a noise threshold
if(value > 50):
avg += value * (i * 1000); # this is for the weighted total,
sum += value; #this is for the denominator
if(on_line != 1):
# If it last read to the left of center, return 0.
if(self.last_value < (self.numSensors - 1)*1000/2):
#print("left")
return 0;
# If it last read to the right of center, return the max.
else:
#print("right")
return (self.numSensors - 1)*1000
self.last_value = avg/sum
return self.last_value
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(Clock,GPIO.OUT)
GPIO.setup(Address,GPIO.OUT)
GPIO.setup(CS,GPIO.OUT)
GPIO.setup(DataOut,GPIO.IN,GPIO.PUD_UP)
# Simple example prints accel/mag data once per second:
if __name__ == '__main__':
from AlphaBot import AlphaBot
maximum = 35;
integral = 0;
last_proportional = 0
TR = TRSensor()
Ab = AlphaBot()
Ab.stop()
print("Line follow Example")
time.sleep(0.5)
for i in range(0,400):
TR.calibrate()
print(i)
print(TR.calibratedMin)
print(TR.calibratedMax)
time.sleep(0.5)
Ab.backward()
while True:
position = TR.readLine()
#print(position)
# The "proportional" term should be 0 when we are on the line.
proportional = position - 2000
# Compute the derivative (change) and integral (sum) of the position.
derivative = proportional - last_proportional
integral += proportional
# Remember the last position.
last_proportional = proportional
'''
// Compute the difference between the two motor power settings,
// m1 - m2. If this is a positive number the robot will turn
// to the right. If it is a negative number, the robot will
// turn to the left, and the magnitude of the number determines
// the sharpness of the turn. You can adjust the constants by which
// the proportional, integral, and derivative terms are multiplied to
// improve performance.
'''
power_difference = proportional/25 + derivative/100 #+ integral/1000;
if (power_difference > maximum):
power_difference = maximum
if (power_difference < - maximum):
power_difference = - maximum
print(position,power_difference)
if (power_difference < 0):
Ab.setPWMB(maximum + power_difference)
Ab.setPWMA(maximum);
else:
Ab.setPWMB(maximum);
Ab.setPWMA(maximum - power_difference)

View File

@@ -0,0 +1,38 @@
import RPi.GPIO as GPIO
import time
from AlphaBot import AlphaBot
Ab = AlphaBot()
DR = 16
DL = 19
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(DR,GPIO.IN,GPIO.PUD_UP)
GPIO.setup(DL,GPIO.IN,GPIO.PUD_UP)
try:
while True:
DR_status = GPIO.input(DR)
DL_status = GPIO.input(DL)
if((DL_status == 1) and (DR_status == 1)):
Ab.forward()
print("forward")
elif((DL_status == 1) and (DR_status == 0)):
Ab.left()
print("left")
elif((DL_status == 0) and (DR_status == 1)):
Ab.right()
print("right")
else:
Ab.backward()
time.sleep(0.2)
Ab.left()
time.sleep(0.2)
Ab.stop()
print("backward")
except KeyboardInterrupt:
GPIO.cleanup();

View File

@@ -0,0 +1,99 @@
import RPi.GPIO as GPIO
import time
from AlphaBot import AlphaBot
Ab = AlphaBot()
IR = 18
PWM = 50
n=0
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(IR,GPIO.IN,GPIO.PUD_UP)
def getkey():
if GPIO.input(IR) == 0:
count = 0
while GPIO.input(IR) == 0 and count < 200: #9ms
count += 1
time.sleep(0.00006)
count = 0
while GPIO.input(IR) == 1 and count < 80: #4.5ms
count += 1
time.sleep(0.00006)
idx = 0
cnt = 0
data = [0,0,0,0]
for i in range(0,32):
count = 0
while GPIO.input(IR) == 0 and count < 15: #0.56ms
count += 1
time.sleep(0.00006)
count = 0
while GPIO.input(IR) == 1 and count < 40: #0: 0.56mx
count += 1 #1: 1.69ms
time.sleep(0.00006)
if count > 8:
data[idx] |= 1<<cnt
if cnt == 7:
cnt = 0
idx += 1
else:
cnt += 1
print(data)
if data[0]+data[1] == 0xFF and data[2]+data[3] == 0xFF: #check
return data[2]
if data[0] == 255 and data[1] == 255 and data[2] == 15 and data[3] == 255:
return "repeat"
print('IRremote Test Start ...')
Ab.stop()
try:
while True:
key = getkey()
if(key != None):
if key == "repeat":
n = 0
if key == 0x18:
Ab.forward()
# print("forward")
if key == 0x08:
Ab.left()
# print("left")
if key == 0x1c:
Ab.stop()
# print("stop")
if key == 0x5a:
Ab.right()
# print("right")
if key == 0x52:
Ab.backward()
# print("backward")
if key == 0x15:
if(PWM + 10 < 101):
PWM = PWM + 10
Ab.setPWMA(PWM)
Ab.setPWMB(PWM)
print(PWM)
if key == 0x07:
if(PWM - 10 > -1):
PWM = PWM - 10
Ab.setPWMA(PWM)
Ab.setPWMB(PWM)
print(PWM)
else:
n += 1
if n > 20000:
n = 0
Ab.stop()
except KeyboardInterrupt:
GPIO.cleanup();

View File

@@ -0,0 +1,38 @@
import RPi.GPIO as GPIO
import time
from AlphaBot import AlphaBot
import smbus
Ab = AlphaBot()
DR = 16
DL = 19
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(DR,GPIO.IN,GPIO.PUD_UP)
GPIO.setup(DL,GPIO.IN,GPIO.PUD_UP)
Ab.stop()
try:
while True:
DR_status = GPIO.input(DR)
DL_status = GPIO.input(DL)
if((DL_status == 0) and (DR_status == 0)):
Ab.forward()
print("forward")
elif((DL_status == 1) and (DR_status == 0)):
Ab.right()
print("right")
elif((DL_status == 0) and (DR_status == 1)):
Ab.left()
print("left")
else:
Ab.stop()
print("stop")
except KeyboardInterrupt:
GPIO.cleanup();

View File

@@ -0,0 +1,73 @@
import RPi.GPIO as GPIO
import time
from AlphaBot import AlphaBot
SERVO = 27
TRIG = 17
ECHO = 5
Ab = AlphaBot()
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(SERVO, GPIO.OUT, initial=GPIO.LOW)
GPIO.setup(TRIG,GPIO.OUT,initial=GPIO.LOW)
GPIO.setup(ECHO,GPIO.IN)
p = GPIO.PWM(SERVO,50)
p.start(0)
def ServoAngle(angle):
p.ChangeDutyCycle(2.5 + 10.0 * angle / 180)
def Distance():
GPIO.output(TRIG,GPIO.HIGH)
time.sleep(0.000015)
GPIO.output(TRIG,GPIO.LOW)
while not GPIO.input(ECHO):
pass
t1 = time.time()
while GPIO.input(ECHO):
pass
t2 = time.time()
return (t2-t1)*34000/2
ServoAngle(90)
print("Ultrasonic_Obstacle_Avoidance")
try:
while True:
middleDistance = Distance()
print("MiddleDistance = %0.2f cm"%middleDistance)
if middleDistance <= 20:
Ab.stop()
# time.sleep(0.5)
ServoAngle(5)
time.sleep(1)
rightDistance = Distance()
print("RightDistance = %0.2f cm"%rightDistance)
# time.sleep(0.5)
ServoAngle(180)
time.sleep(1)
leftDistance = Distance()
print("LeftDistance = %0.2f cm"%leftDistance)
# time.sleep(0.5)
ServoAngle(90)
time.sleep(1)
if rightDistance <20 and leftDistance < 20:
Ab.backward()
time.sleep(0.3)
Ab.stop()
elif rightDistance >= leftDistance:
Ab.right()
time.sleep(0.3)
Ab.stop()
else:
Ab.left()
time.sleep(0.3)
Ab.stop()
time.sleep(0.3)
else:
Ab.forward()
time.sleep(0.02)
except KeyboardInterrupt:
GPIO.cleanup();

View File

@@ -0,0 +1,30 @@
import RPi.GPIO as GPIO
import time
TRIG = 17
ECHO = 5
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(TRIG,GPIO.OUT,initial=GPIO.LOW)
GPIO.setup(ECHO,GPIO.IN)
def dist():
GPIO.output(TRIG,GPIO.HIGH)
time.sleep(0.000015)
GPIO.output(TRIG,GPIO.LOW)
while not GPIO.input(ECHO):
pass
t1 = time.time()
while GPIO.input(ECHO):
pass
t2 = time.time()
return (t2-t1)*34000/2
try:
while True:
print("HELLO")
print("Distance:%0.2f cm" % dist())
time.sleep(1)
except KeyboardInterrupt:
GPIO.cleanup()

View File

@@ -1,41 +1,41 @@
use CARIA;
#------------------------------------------------------------
# Insertions de Données
#------------------------------------------------------------
INSERT INTO Client (dateenregistre,privilege,pseudo, prenom, nom, sexe, age, adresse, mdp, adressemail, permis,imageclient)
VALUES
('2016-09-12' ,'1', 'sa' , 'sa' , 'pc' , 'HOMME','20' , 'sa' , '382e0360e4eb7b70034fbaa69bec5786' , 'sa@gmail.com' ,'0', '/images/avatars/img_user.jpg'),
('2016-09-12' ,'1', 'PAPI91' , 'FLORIAN' , 'ARBITA' , 'HOMME','17' , '3 RUE PITI' , '83ea007bfdd589f29b820552b3f94260' , 'PAPI@gmail.com' ,'0', '/images/avatars/img_user1.jpg'),
('2016-10-05' ,'2', 'TATA85' , 'JANNE' , 'MORINA' , 'FEMME','5' , '78 RUE PARI' , '01750feaaf112c40293ac49b658b12ab' , 'TATA@gmail.com' ,'1', '/images/avatars/img_user1.jpg'),
('2016-11-03' ,'2', 'MODR4' , 'DAVID' , 'DAROP' , 'HOMME','45' , '65 RUE PIORI' , '81df18ab2fce0c63561642e298347e5b' , 'MODR@gmail.com' ,'4', '/images/avatars/img_user1.jpg'),
('2016-06-25' ,'2', 'ALLOO6' , 'GEREMY' , 'MILES' , 'HOMME','14' , '6 RUE NIOLO' , '83ea007bfdd589f29b820552b3f94260' , 'ALLO@gmail.com' ,'2', '/images/avatars/img_user1.jpg'),
('2016-05-10' ,'2', 'MAMA23' , 'FLORIANE', 'BOLON' , 'FEMME','25' , '1 RUE ROB' , '01750feaaf112c40293ac49b658b12ab' , 'MAMA@gmail.com' ,'1', '/images/avatars/img_user1.jpg'),
('2016-07-01' ,'2', 'BIBI' , 'EMILIE' , 'SIRANY' , 'FEMME','6' , 'MAISON DU CLOS' , 'd74c404f01c1e3c127118a8c1fc81212' , 'BIBI@gmail.com' ,'0', '/images/avatars/img_user1.jpg'),
('2016-09-11' ,'2', 'PIOUPIOU' , 'FLORA' , 'CERINA' , 'FEMME','15' , 'ALLE DU RUIS' , '7b5550eae68b75c98a58881cb968c6ff' , 'PIOU@gmail.com' ,'0', '/images/avatars/img_user1.jpg'),
('2016-09-05' ,'2', 'BANANA987', 'LUCY' , 'CARELI' , 'FEMME','18' , '9 MER DU CIEL' , '01750feaaf112c40293ac49b658b12ab' , 'BANA@gmail.com' ,'0', '/images/avatars/img_user1.jpg'),
('2016-09-30' ,'2', 'RARA' , 'SOPHIE' , 'BENIC' , 'FEMME','26' , 'CREUX DE L''HIRONDELLE' , 'dc6accf0ee16c9dbf4daf2b81c1e7fd4' , 'RARA@gmail.com' ,'1', '/images/avatars/img_user1.jpg'),
('2017-05-29' ,'2', 'DARKY91' , 'JONHATAN' , 'MOITILE' , 'HOMME','5' , '198 AVENUE DU GENERAL' , 'b54637201175346cc78ec20fa2718b2f' , 'darky@gmail.com' ,'2', '/images/avatars/img_user1.jpg'),
('2017-04-05' ,'2', 'DAMI85' , 'THOMAS' , 'NIGOLE' , 'HOMME','5' , '35 RUE DE LA RIVIIERE' , 'b2ac9acf20fa3711eb6c8b00734adbde' , 'darky@gmail.com' ,'1', DEFAULT),
('2017-02-25' ,'2', 'FOFO36' , 'REMY' , 'MINONY' , 'HOMME','5' , '01 AVENUE DE L''IMPASSE DU CREUX' , '71b14f0cefc1b25455c3ca7c22a80473' , 'FOFO@gmail.com' ,'3', '/images/avatars/img_user1.jpg'),
('2017-03-14' ,'2', 'MIBO466' , 'OLIVIA' , 'MOITILE' , 'FEMME','5' , '36 BIS ALLEE DE L''ETANG DE MILLE LIEUX' , '857692b439598675d6f89db000a1dc0a' , 'MIBO@gmail.com' ,'4', '/images/avatars/img_user1.jpg'),
('2017-01-09' ,'2', 'BIIIBBBBOOPOPIL' , 'SAMADOUDOURELIE' , 'KILOPANAPONIKAT' , 'HOMME','100' , '325 RUE DE PARIS, 3 EME ARRONDISSEMENT , BRUXELLE' , '52b5dd8f28c934b7a4a3fd3d67835cd8' , 'BIIIBBBBOOPOPIL@yahoo.com' ,'7', DEFAULT);
INSERT INTO Voiture (privilege, prenom, nom, age, galop, sexe, adressemail,mdp)
VALUES
('1' , 'sa' , 'sa' ,'20', '2' , 'HOMME' , 'sa@gmail.com' , 'P@ssword'),
('1' , 'FLORIAN' , 'ARBITA' ,'18', '3' , 'HOMME' , 'farbita@gmail.com' , 'AZERTY' ),
('2' , 'JEAN' , 'DURILE' ,'25', '7' , 'HOMME' ,'jdurile@gmail.com' , '123' ),
('2' , 'REMY' , 'LIBY' ,'43', '6' , 'HOMME' ,'rliby@gmail.com' , '321' ),
('2' , 'SOPHIA' , 'CERIA' ,'29', '8' , 'FEMME' ,'sceria@gmail.com' , 'qwerty' ),
('2' , 'FLORA' , 'DUPUIS' ,'36', '4' , 'FEMME' ,'fdupuis@gmail.com' , 'aqwzsx' ),
('2' , 'MEGANE' , 'CERIA' ,'29', '5' , 'FEMME' ,'sceria@gmail.com' , 'wxcvbn' ),
('2' , 'DOMINIQUE' , 'PLUTIE' ,'64', '7' , 'HOMME' ,'dplutie@gmail.com' , '2017' ),
('2' , 'KEVIN' , 'LOPIT' ,'35', '4' , 'HOMME' ,'klopit@gmail.com' , 'azerty123' ),
('2' , 'JONATHAN' , 'LIKY' ,'29', '8' , 'HOMME' ,'mimi@gmail.com' , 'tyu4u566' ),
('1' , 'BENJAMIN' , 'DOMINAK' ,'36', '4' , 'HOMME' ,'pilix@gmail.com' , 'gs12sfg' ),
('2' , 'OLIVIA' , 'XIJIRA' ,'29', '8' , 'FEMME' ,'nathalia@gmail.com' , 'bvc9d65er' ),
('2' , 'DOMINIQUE' , 'MANAPLA' ,'64', '7' , 'FEMME' ,'titineau@gmail.com' , '78hyh789' ),
('1' , 'JEAN-PIERE' , 'JUDUKI' ,'35', '9' , 'HOMME' ,'mimome@gmail.com' , 'vf54vfdv' ),
use CARIA;
#------------------------------------------------------------
# Insertions de Données
#------------------------------------------------------------
INSERT INTO Client (dateenregistre,privilege,pseudo, prenom, nom, sexe, age, adresse, mdp, adressemail, permis,imageclient)
VALUES
('2016-09-12' ,'1', 'sa' , 'sa' , 'pc' , 'HOMME','20' , 'sa' , '382e0360e4eb7b70034fbaa69bec5786' , 'sa@gmail.com' ,'0', '/images/avatars/img_user.jpg'),
('2016-09-12' ,'1', 'PAPI91' , 'FLORIAN' , 'ARBITA' , 'HOMME','17' , '3 RUE PITI' , '83ea007bfdd589f29b820552b3f94260' , 'PAPI@gmail.com' ,'0', '/images/avatars/img_user1.jpg'),
('2016-10-05' ,'2', 'TATA85' , 'JANNE' , 'MORINA' , 'FEMME','5' , '78 RUE PARI' , '01750feaaf112c40293ac49b658b12ab' , 'TATA@gmail.com' ,'1', '/images/avatars/img_user1.jpg'),
('2016-11-03' ,'2', 'MODR4' , 'DAVID' , 'DAROP' , 'HOMME','45' , '65 RUE PIORI' , '81df18ab2fce0c63561642e298347e5b' , 'MODR@gmail.com' ,'4', '/images/avatars/img_user1.jpg'),
('2016-06-25' ,'2', 'ALLOO6' , 'GEREMY' , 'MILES' , 'HOMME','14' , '6 RUE NIOLO' , '83ea007bfdd589f29b820552b3f94260' , 'ALLO@gmail.com' ,'2', '/images/avatars/img_user1.jpg'),
('2016-05-10' ,'2', 'MAMA23' , 'FLORIANE', 'BOLON' , 'FEMME','25' , '1 RUE ROB' , '01750feaaf112c40293ac49b658b12ab' , 'MAMA@gmail.com' ,'1', '/images/avatars/img_user1.jpg'),
('2016-07-01' ,'2', 'BIBI' , 'EMILIE' , 'SIRANY' , 'FEMME','6' , 'MAISON DU CLOS' , 'd74c404f01c1e3c127118a8c1fc81212' , 'BIBI@gmail.com' ,'0', '/images/avatars/img_user1.jpg'),
('2016-09-11' ,'2', 'PIOUPIOU' , 'FLORA' , 'CERINA' , 'FEMME','15' , 'ALLE DU RUIS' , '7b5550eae68b75c98a58881cb968c6ff' , 'PIOU@gmail.com' ,'0', '/images/avatars/img_user1.jpg'),
('2016-09-05' ,'2', 'BANANA987', 'LUCY' , 'CARELI' , 'FEMME','18' , '9 MER DU CIEL' , '01750feaaf112c40293ac49b658b12ab' , 'BANA@gmail.com' ,'0', '/images/avatars/img_user1.jpg'),
('2016-09-30' ,'2', 'RARA' , 'SOPHIE' , 'BENIC' , 'FEMME','26' , 'CREUX DE L''HIRONDELLE' , 'dc6accf0ee16c9dbf4daf2b81c1e7fd4' , 'RARA@gmail.com' ,'1', '/images/avatars/img_user1.jpg'),
('2017-05-29' ,'2', 'DARKY91' , 'JONHATAN' , 'MOITILE' , 'HOMME','5' , '198 AVENUE DU GENERAL' , 'b54637201175346cc78ec20fa2718b2f' , 'darky@gmail.com' ,'2', '/images/avatars/img_user1.jpg'),
('2017-04-05' ,'2', 'DAMI85' , 'THOMAS' , 'NIGOLE' , 'HOMME','5' , '35 RUE DE LA RIVIIERE' , 'b2ac9acf20fa3711eb6c8b00734adbde' , 'darky@gmail.com' ,'1', DEFAULT),
('2017-02-25' ,'2', 'FOFO36' , 'REMY' , 'MINONY' , 'HOMME','5' , '01 AVENUE DE L''IMPASSE DU CREUX' , '71b14f0cefc1b25455c3ca7c22a80473' , 'FOFO@gmail.com' ,'3', '/images/avatars/img_user1.jpg'),
('2017-03-14' ,'2', 'MIBO466' , 'OLIVIA' , 'MOITILE' , 'FEMME','5' , '36 BIS ALLEE DE L''ETANG DE MILLE LIEUX' , '857692b439598675d6f89db000a1dc0a' , 'MIBO@gmail.com' ,'4', '/images/avatars/img_user1.jpg'),
('2017-01-09' ,'2', 'BIIIBBBBOOPOPIL' , 'SAMADOUDOURELIE' , 'KILOPANAPONIKAT' , 'HOMME','100' , '325 RUE DE PARIS, 3 EME ARRONDISSEMENT , BRUXELLE' , '52b5dd8f28c934b7a4a3fd3d67835cd8' , 'BIIIBBBBOOPOPIL@yahoo.com' ,'7', DEFAULT);
INSERT INTO Voiture (privilege, prenom, nom, age, galop, sexe, adressemail,mdp)
VALUES
('1' , 'sa' , 'sa' ,'20', '2' , 'HOMME' , 'sa@gmail.com' , 'P@ssword'),
('1' , 'FLORIAN' , 'ARBITA' ,'18', '3' , 'HOMME' , 'farbita@gmail.com' , 'AZERTY' ),
('2' , 'JEAN' , 'DURILE' ,'25', '7' , 'HOMME' ,'jdurile@gmail.com' , '123' ),
('2' , 'REMY' , 'LIBY' ,'43', '6' , 'HOMME' ,'rliby@gmail.com' , '321' ),
('2' , 'SOPHIA' , 'CERIA' ,'29', '8' , 'FEMME' ,'sceria@gmail.com' , 'qwerty' ),
('2' , 'FLORA' , 'DUPUIS' ,'36', '4' , 'FEMME' ,'fdupuis@gmail.com' , 'aqwzsx' ),
('2' , 'MEGANE' , 'CERIA' ,'29', '5' , 'FEMME' ,'sceria@gmail.com' , 'wxcvbn' ),
('2' , 'DOMINIQUE' , 'PLUTIE' ,'64', '7' , 'HOMME' ,'dplutie@gmail.com' , '2017' ),
('2' , 'KEVIN' , 'LOPIT' ,'35', '4' , 'HOMME' ,'klopit@gmail.com' , 'azerty123' ),
('2' , 'JONATHAN' , 'LIKY' ,'29', '8' , 'HOMME' ,'mimi@gmail.com' , 'tyu4u566' ),
('1' , 'BENJAMIN' , 'DOMINAK' ,'36', '4' , 'HOMME' ,'pilix@gmail.com' , 'gs12sfg' ),
('2' , 'OLIVIA' , 'XIJIRA' ,'29', '8' , 'FEMME' ,'nathalia@gmail.com' , 'bvc9d65er' ),
('2' , 'DOMINIQUE' , 'MANAPLA' ,'64', '7' , 'FEMME' ,'titineau@gmail.com' , '78hyh789' ),
('1' , 'JEAN-PIERE' , 'JUDUKI' ,'35', '9' , 'HOMME' ,'mimome@gmail.com' , 'vf54vfdv' ),
('2', 'SAMADOULOURELIE', 'KILOFANAPONIKAE' ,'100', '9' , 'FEMME' ,'BARIBOULBOPOPIL@yahoo.com' , 'F%F53&D96DF!FDS' );

5
IA/IA-Tuto-YT.url Normal file
View File

@@ -0,0 +1,5 @@
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,11
[InternetShortcut]
IDList=
URL=https://www.youtube.com/watch?v=-3xbAkCWJCc&list=PLALfJegMRGp2dJh-n1EVw2ESAUY-Et9KE

5
IA/Tuto.url Normal file
View File

@@ -0,0 +1,5 @@
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,11
[InternetShortcut]
IDList=
URL=https://github.com/L42Project/Tutoriels

BIN
IA/Tutoriels-master.zip Normal file

Binary file not shown.

5
IA/haarcascades.url Normal file
View File

@@ -0,0 +1,5 @@
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,11
[InternetShortcut]
IDList=
URL=https://github.com/opencv/opencv/tree/master/data/haarcascades

View File

@@ -1,9 +1,9 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/connexion/index.php');
}
include_once('./vue/footer.html');
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/connexion/index.php');
}
include_once('./vue/footer.html');

View File

@@ -1,9 +1,9 @@
<?php
define('VISITEUR',1);
define('INSCRIT',2);
define('MODO',3);
define('ADMIN',4);
define('ERR_IS_CO','Vous ne pouvez pas accéder à cette page si vous n\'êtes pas connecté');
?>
<?php
define('VISITEUR',1);
define('INSCRIT',2);
define('MODO',3);
define('ADMIN',4);
define('ERR_IS_CO','Vous ne pouvez pas accéder à cette page si vous n\'êtes pas connecté');
?>

View File

@@ -1,25 +1,25 @@
<?php
function erreur($err='')
{
$mess=($err!='')? $err:'Une erreur inconnue s\'est produite';
exit('
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Vous êtes pas autorisé a passer ici</h2><br>
<p> '.$mess.' </p>
<p>Cliquez <a href="./espace_membre.php">ici</a> pour revenir à la page d\'accueil</p>
</div>
</section>
</div>');
}
function move_avatar($avatar)
{
$extension_upload = strtolower(substr( strrchr($avatar['name'], '.') ,1));
$name = time();
$nomavatar = str_replace(' ','',$name).".".$extension_upload;
$name = "./images/avatars/".str_replace(' ','',$name).".".$extension_upload;
move_uploaded_file($avatar['tmp_name'],$name);
return $nomavatar;
}
?>
<?php
function erreur($err='')
{
$mess=($err!='')? $err:'Une erreur inconnue s\'est produite';
exit('
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Vous êtes pas autorisé a passer ici</h2><br>
<p> '.$mess.' </p>
<p>Cliquez <a href="./espace_membre.php">ici</a> pour revenir à la page d\'accueil</p>
</div>
</section>
</div>');
}
function move_avatar($avatar)
{
$extension_upload = strtolower(substr( strrchr($avatar['name'], '.') ,1));
$name = time();
$nomavatar = str_replace(' ','',$name).".".$extension_upload;
$name = "./images/avatars/".str_replace(' ','',$name).".".$extension_upload;
move_uploaded_file($avatar['tmp_name'],$name);
return $nomavatar;
}
?>

View File

@@ -1,238 +1,238 @@
<script>
function bbcode(bbdebut, bbfin)
{
var input = window.document.formulaire.message;
input.focus();
if(typeof document.selection != 'undefined')
{
var range = document.selection.createRange();
var insText = range.text;
range.text = bbdebut + insText + bbfin;
range = document.selection.createRange();
if (insText.length == 0)
{
range.move('character', -bbfin.length);
}
else
{
range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
}
range.select();
}
else if(typeof input.selectionStart != 'undefined')
{
var start = input.selectionStart;
var end = input.selectionEnd;
var insText = input.value.substring(start, end);
input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
var pos;
if (insText.length == 0)
{
pos = start + bbdebut.length;
}
else
{
pos = start + bbdebut.length + insText.length + bbfin.length;
}
input.selectionStart = pos;
input.selectionEnd = pos;
}
else
{
var pos;
var re = new RegExp('^[0-9]{0,3}$');
while(!re.test(pos))
{
pos = prompt("insertion (0.." + input.value.length + "):", "0");
}
if(pos > input.value.length)
{
pos = input.value.length;
}
var insText = prompt("Veuillez taper le texte");
input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
}
}
function smilies(img)
{
window.document.formulaire.message.value += '' + img + '';
}
</script>
<?php
session_start();
$titre="Poster";
$balises = true;
include("./modele/connexion_sql.php");
include("./debut.php");
include("./menu.php");
?>
<?php
//Qu'est ce qu'on veut faire ? poster, répondre ou éditer ?
$action = (isset($_GET['action']))?htmlspecialchars($_GET['action']):'';
//Il faut être connecté pour poster !
if ($id==0) erreur(ERR_IS_CO);
//Si on veut poster un nouveau topic, la variable f se trouve dans l'url,
//On récupère certaines valeurs
if (isset($_GET['f']))
{
$forum = (int) $_GET['f'];
$query= $bdd->prepare('SELECT forum_name, auth_view, auth_post, auth_topic, auth_annonce, auth_modo
FROM forum_forum WHERE forum_id =:forum');
$query->bindValue(':forum',$forum,PDO::PARAM_INT);
$query->execute();
$data=$query->fetch();
echo '<p><i>Vous êtes ici</i> : <a href="./members_area.php">Index du forum</a> -->
<a href="./voirforum.php?f='.$data['forum_id'].'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
--> Nouveau topic</p>';
}
//Sinon c'est un nouveau message, on a la variable t et
//On récupère f grâce à une requête
elseif (isset($_GET['t']))
{
$topic = (int) $_GET['t'];
$query=$bdd->prepare('SELECT topic_titre, forum_topic.forum_id,
forum_name, auth_view, auth_post, auth_topic, auth_annonce, auth_modo
FROM forum_topic
LEFT JOIN forum_forum ON forum_forum.forum_id = forum_topic.forum_id
WHERE topic_id =:topic');
$query->bindValue(':topic',$topic,PDO::PARAM_INT);
$query->execute();
$data=$query->fetch();
$forum = $data['forum_id'];
echo '<p><i>Vous êtes ici</i> : <a href="./members_area.php">Index du forum</a> -->
<a href="./voirforum.php?f='.$data['forum_id'].'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
--> <a href="./voirtopic.php?t='.$topic.'">'.stripslashes(htmlspecialchars($data['topic_titre'])).'</a>
--> Répondre</p>';
}
//Enfin sinon c'est au sujet de la modération(on verra plus tard en détail)
//On ne connait que le post, il faut chercher le reste
elseif (isset ($_GET['p']))
{
$post = (int) $_GET['p'];
$query=$bdd->prepare('SELECT post_createur, forum_post.topic_id, topic_titre, forum_topic.forum_id,
forum_name, auth_view, auth_post, auth_topic, auth_annonce, auth_modo
FROM forum_post
LEFT JOIN forum_topic ON forum_topic.topic_id = forum_post.topic_id
LEFT JOIN forum_forum ON forum_forum.forum_id = forum_topic.forum_id
WHERE forum_post.post_id =:post');
$query->bindValue(':post',$post,PDO::PARAM_INT);
$query->execute();
$data=$query->fetch();
$topic = $data['topic_id'];
$forum = $data['forum_id'];
echo '<p><i>Vous êtes ici</i> : <a href="./members_area.php">Index du forum</a> -->
<a href="./voirforum.php?f='.$data['forum_id'].'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
--> <a href="./voirtopic.php?t='.$topic.'">'.stripslashes(htmlspecialchars($data['topic_titre'])).'</a>
--> Modérer un message</p>';
}
$query->CloseCursor();
?>
<?php
switch($action)
{
case "repondre": //Premier cas : on souhaite répondre
//Ici, on affiche le formulaire de réponse
break;
case "nouveautopic": //Deuxième cas : on souhaite créer un nouveau topic
//Ici, on affiche le formulaire de nouveau topic
break;
//D'autres cas viendront s'ajouter là plus tard :p
default: //Si jamais c'est aucun de ceux-là, c'est qu'il y a eu un problème :o
echo'<h2>Cette action est impossible</h2>';
} //Fin du switch
?>
<?php
switch($action)
{
case "repondre": //Premier cas on souhaite répondre
?>
<h1>Poster une réponse</h1>
<form method="post" action="postok.php?action=repondre&amp;t=<?php echo $topic ?>" name="formulaire">
<fieldset><legend>Mise en forme</legend>
<input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[g]', '[/g]');return(false)" />
<input type="button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('[i]', '[/i]');return(false)" />
<input type="button" id="souligné" name="souligné" value="Souligné" onClick="javascript:bbcode('[s]', '[/s]');return(false)" />
<input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url]', '[/url]');return(false)" />
<br><br>
<img src="./images/smileys/heureux.gif" title="heureux" alt="heureux" onClick="javascript:smilies(' :D ');return(false)" />
<img src="./images/smileys/lol.gif" title="lol" alt="lol" onClick="javascript:smilies(' :lol: ');return(false)" />
<img src="./images/smileys/triste.gif" title="triste" alt="triste" onClick="javascript:smilies(' :triste: ');return(false)" />
<img src="./images/smileys/cool.gif" title="cool" alt="cool" onClick="javascript:smilies(' :frime: ');return(false)" />
<img src="./images/smileys/rire.gif" title="rire" alt="rire" onClick="javascript:smilies(' XD ');return(false)" />
<img src="./images/smileys/confus.gif" title="confus" alt="confus" onClick="javascript:smilies(' :s ');return(false)" />
<img src="./images/smileys/choc.gif" title="choc" alt="choc" onClick="javascript:smilies(' :o ');return(false)" />
<img src="./images/smileys/question.gif" title="?" alt="?" onClick="javascript:smilies(' :interrogation: ');return(false)" />
<img src="./images/smileys/exclamation.gif" title="!" alt="!" onClick="javascript:smilies(' :exclamation: ');return(false)" />
</fieldset>
<fieldset><legend>Message</legend><textarea cols="80" rows="8" id="message" name="message"></textarea></fieldset>
<input type="submit" name="submit" value="Envoyer" />
<input type="reset" name = "Effacer" value = "Effacer"/>
</p></form>
<?php
break;
case "nouveautopic":
?>
<h1>Nouveau topic</h1>
<form method="post" action="postok.php?action=nouveautopic&amp;f=<?php echo $forum ?>" name="formulaire">
<fieldset><legend>Titre</legend>
<input type="text" size="80" id="titre" name="titre" /></fieldset>
<fieldset><legend>Mise en forme</legend>
<input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[g]', '[/g]');return(false)" />
<input type="button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('[i]', '[/i]');return(false)" />
<input type="button" id="souligné" name="souligné" value="Souligné" onClick="javascript:bbcode('[s]', '[/s]');return(false)" />
<input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url]', '[/url]');return(false)" />
<br><br>
<img src="./images/smileys/heureux.gif" title="heureux" alt="heureux" onClick="javascript:smilies(':D');return(false)" />
<img src="./images/smileys/lol.gif" title="lol" alt="lol" onClick="javascript:smilies(':lol:');return(false)" />
<img src="./images/smileys/triste.gif" title="triste" alt="triste" onClick="javascript:smilies(':triste:');return(false)" />
<img src="./images/smileys/cool.gif" title="cool" alt="cool" onClick="javascript:smilies(':frime:');return(false)" />
<img src="./images/smileys/rire.gif" title="rire" alt="rire" onClick="javascript:smilies('XD');return(false)" />
<img src="./images/smileys/confus.gif" title="confus" alt="confus" onClick="javascript:smilies(':s');return(false)" />
<img src="./images/smileys/choc.gif" title="choc" alt="choc" onClick="javascript:smilies(':O');return(false)" />
<img src="./images/smileys/question.gif" title="?" alt="?" onClick="javascript:smilies(':interrogation:');return(false)" />
<img src="./images/smileys/exclamation.gif" title="!" alt="!" onClick="javascript:smilies(':exclamation:');return(false)" /></fieldset>
<fieldset><legend>Message</legend>
<textarea cols="80" rows="8" id="message" name="message"></textarea>
<label><input type="radio" name="mess" value="Annonce" />Annonce</label>
<label><input type="radio" name="mess" value="Message" checked="checked" />Topic</label>
</fieldset>
<p>
<input type="submit" name="submit" value="Envoyer" />
<input type="reset" name = "Effacer" value = "Effacer" /></p>
</form>
<?php
break;
//D'autres cas viendront s'ajouter ici par la suite
?>
<input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[g]', '[/g]');return(false)" />
<?php
default: //Si jamais c'est aucun de ceux là c'est qu'il y a eu un problème :o
echo'<p>Cette action est impossible</p>';
} //Fin du switch
?>
</div>
</html>
<script>
function bbcode(bbdebut, bbfin)
{
var input = window.document.formulaire.message;
input.focus();
if(typeof document.selection != 'undefined')
{
var range = document.selection.createRange();
var insText = range.text;
range.text = bbdebut + insText + bbfin;
range = document.selection.createRange();
if (insText.length == 0)
{
range.move('character', -bbfin.length);
}
else
{
range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
}
range.select();
}
else if(typeof input.selectionStart != 'undefined')
{
var start = input.selectionStart;
var end = input.selectionEnd;
var insText = input.value.substring(start, end);
input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
var pos;
if (insText.length == 0)
{
pos = start + bbdebut.length;
}
else
{
pos = start + bbdebut.length + insText.length + bbfin.length;
}
input.selectionStart = pos;
input.selectionEnd = pos;
}
else
{
var pos;
var re = new RegExp('^[0-9]{0,3}$');
while(!re.test(pos))
{
pos = prompt("insertion (0.." + input.value.length + "):", "0");
}
if(pos > input.value.length)
{
pos = input.value.length;
}
var insText = prompt("Veuillez taper le texte");
input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
}
}
function smilies(img)
{
window.document.formulaire.message.value += '' + img + '';
}
</script>
<?php
session_start();
$titre="Poster";
$balises = true;
include("./modele/connexion_sql.php");
include("./debut.php");
include("./menu.php");
?>
<?php
//Qu'est ce qu'on veut faire ? poster, répondre ou éditer ?
$action = (isset($_GET['action']))?htmlspecialchars($_GET['action']):'';
//Il faut être connecté pour poster !
if ($id==0) erreur(ERR_IS_CO);
//Si on veut poster un nouveau topic, la variable f se trouve dans l'url,
//On récupère certaines valeurs
if (isset($_GET['f']))
{
$forum = (int) $_GET['f'];
$query= $bdd->prepare('SELECT forum_name, auth_view, auth_post, auth_topic, auth_annonce, auth_modo
FROM forum_forum WHERE forum_id =:forum');
$query->bindValue(':forum',$forum,PDO::PARAM_INT);
$query->execute();
$data=$query->fetch();
echo '<p><i>Vous êtes ici</i> : <a href="./members_area.php">Index du forum</a> -->
<a href="./voirforum.php?f='.$data['forum_id'].'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
--> Nouveau topic</p>';
}
//Sinon c'est un nouveau message, on a la variable t et
//On récupère f grâce à une requête
elseif (isset($_GET['t']))
{
$topic = (int) $_GET['t'];
$query=$bdd->prepare('SELECT topic_titre, forum_topic.forum_id,
forum_name, auth_view, auth_post, auth_topic, auth_annonce, auth_modo
FROM forum_topic
LEFT JOIN forum_forum ON forum_forum.forum_id = forum_topic.forum_id
WHERE topic_id =:topic');
$query->bindValue(':topic',$topic,PDO::PARAM_INT);
$query->execute();
$data=$query->fetch();
$forum = $data['forum_id'];
echo '<p><i>Vous êtes ici</i> : <a href="./members_area.php">Index du forum</a> -->
<a href="./voirforum.php?f='.$data['forum_id'].'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
--> <a href="./voirtopic.php?t='.$topic.'">'.stripslashes(htmlspecialchars($data['topic_titre'])).'</a>
--> Répondre</p>';
}
//Enfin sinon c'est au sujet de la modération(on verra plus tard en détail)
//On ne connait que le post, il faut chercher le reste
elseif (isset ($_GET['p']))
{
$post = (int) $_GET['p'];
$query=$bdd->prepare('SELECT post_createur, forum_post.topic_id, topic_titre, forum_topic.forum_id,
forum_name, auth_view, auth_post, auth_topic, auth_annonce, auth_modo
FROM forum_post
LEFT JOIN forum_topic ON forum_topic.topic_id = forum_post.topic_id
LEFT JOIN forum_forum ON forum_forum.forum_id = forum_topic.forum_id
WHERE forum_post.post_id =:post');
$query->bindValue(':post',$post,PDO::PARAM_INT);
$query->execute();
$data=$query->fetch();
$topic = $data['topic_id'];
$forum = $data['forum_id'];
echo '<p><i>Vous êtes ici</i> : <a href="./members_area.php">Index du forum</a> -->
<a href="./voirforum.php?f='.$data['forum_id'].'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
--> <a href="./voirtopic.php?t='.$topic.'">'.stripslashes(htmlspecialchars($data['topic_titre'])).'</a>
--> Modérer un message</p>';
}
$query->CloseCursor();
?>
<?php
switch($action)
{
case "repondre": //Premier cas : on souhaite répondre
//Ici, on affiche le formulaire de réponse
break;
case "nouveautopic": //Deuxième cas : on souhaite créer un nouveau topic
//Ici, on affiche le formulaire de nouveau topic
break;
//D'autres cas viendront s'ajouter là plus tard :p
default: //Si jamais c'est aucun de ceux-là, c'est qu'il y a eu un problème :o
echo'<h2>Cette action est impossible</h2>';
} //Fin du switch
?>
<?php
switch($action)
{
case "repondre": //Premier cas on souhaite répondre
?>
<h1>Poster une réponse</h1>
<form method="post" action="postok.php?action=repondre&amp;t=<?php echo $topic ?>" name="formulaire">
<fieldset><legend>Mise en forme</legend>
<input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[g]', '[/g]');return(false)" />
<input type="button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('[i]', '[/i]');return(false)" />
<input type="button" id="souligné" name="souligné" value="Souligné" onClick="javascript:bbcode('[s]', '[/s]');return(false)" />
<input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url]', '[/url]');return(false)" />
<br><br>
<img src="./images/smileys/heureux.gif" title="heureux" alt="heureux" onClick="javascript:smilies(' :D ');return(false)" />
<img src="./images/smileys/lol.gif" title="lol" alt="lol" onClick="javascript:smilies(' :lol: ');return(false)" />
<img src="./images/smileys/triste.gif" title="triste" alt="triste" onClick="javascript:smilies(' :triste: ');return(false)" />
<img src="./images/smileys/cool.gif" title="cool" alt="cool" onClick="javascript:smilies(' :frime: ');return(false)" />
<img src="./images/smileys/rire.gif" title="rire" alt="rire" onClick="javascript:smilies(' XD ');return(false)" />
<img src="./images/smileys/confus.gif" title="confus" alt="confus" onClick="javascript:smilies(' :s ');return(false)" />
<img src="./images/smileys/choc.gif" title="choc" alt="choc" onClick="javascript:smilies(' :o ');return(false)" />
<img src="./images/smileys/question.gif" title="?" alt="?" onClick="javascript:smilies(' :interrogation: ');return(false)" />
<img src="./images/smileys/exclamation.gif" title="!" alt="!" onClick="javascript:smilies(' :exclamation: ');return(false)" />
</fieldset>
<fieldset><legend>Message</legend><textarea cols="80" rows="8" id="message" name="message"></textarea></fieldset>
<input type="submit" name="submit" value="Envoyer" />
<input type="reset" name = "Effacer" value = "Effacer"/>
</p></form>
<?php
break;
case "nouveautopic":
?>
<h1>Nouveau topic</h1>
<form method="post" action="postok.php?action=nouveautopic&amp;f=<?php echo $forum ?>" name="formulaire">
<fieldset><legend>Titre</legend>
<input type="text" size="80" id="titre" name="titre" /></fieldset>
<fieldset><legend>Mise en forme</legend>
<input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[g]', '[/g]');return(false)" />
<input type="button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('[i]', '[/i]');return(false)" />
<input type="button" id="souligné" name="souligné" value="Souligné" onClick="javascript:bbcode('[s]', '[/s]');return(false)" />
<input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url]', '[/url]');return(false)" />
<br><br>
<img src="./images/smileys/heureux.gif" title="heureux" alt="heureux" onClick="javascript:smilies(':D');return(false)" />
<img src="./images/smileys/lol.gif" title="lol" alt="lol" onClick="javascript:smilies(':lol:');return(false)" />
<img src="./images/smileys/triste.gif" title="triste" alt="triste" onClick="javascript:smilies(':triste:');return(false)" />
<img src="./images/smileys/cool.gif" title="cool" alt="cool" onClick="javascript:smilies(':frime:');return(false)" />
<img src="./images/smileys/rire.gif" title="rire" alt="rire" onClick="javascript:smilies('XD');return(false)" />
<img src="./images/smileys/confus.gif" title="confus" alt="confus" onClick="javascript:smilies(':s');return(false)" />
<img src="./images/smileys/choc.gif" title="choc" alt="choc" onClick="javascript:smilies(':O');return(false)" />
<img src="./images/smileys/question.gif" title="?" alt="?" onClick="javascript:smilies(':interrogation:');return(false)" />
<img src="./images/smileys/exclamation.gif" title="!" alt="!" onClick="javascript:smilies(':exclamation:');return(false)" /></fieldset>
<fieldset><legend>Message</legend>
<textarea cols="80" rows="8" id="message" name="message"></textarea>
<label><input type="radio" name="mess" value="Annonce" />Annonce</label>
<label><input type="radio" name="mess" value="Message" checked="checked" />Topic</label>
</fieldset>
<p>
<input type="submit" name="submit" value="Envoyer" />
<input type="reset" name = "Effacer" value = "Effacer" /></p>
</form>
<?php
break;
//D'autres cas viendront s'ajouter ici par la suite
?>
<input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[g]', '[/g]');return(false)" />
<?php
default: //Si jamais c'est aucun de ceux là c'est qu'il y a eu un problème :o
echo'<p>Cette action est impossible</p>';
} //Fin du switch
?>
</div>
</html>

View File

@@ -1,23 +1,23 @@
<?php
session_start();
session_destroy();
$titre="Déconnexion";
include("./vue/header.html");
if ($id==0) erreur(ERR_IS_NOT_CO);
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Déconnexion réussie!</h2><br>
<h4>A Bientôt</h4><br>
<p>Vous êtes à présent déconnecté <br/>
<!--Cliquez <a href="'.htmlspecialchars($_SERVER['HTTP_REFERER']).'">ici</a> pour revenir à la page précédente.<br>-->
Cliquez <a href="./espace_membre.php">ici</a> pour revenir à la page principale</p><br>
</div>
</div>
</section>
</div>
<?php
include("./vue/footer.html");
<?php
session_start();
session_destroy();
$titre="Déconnexion";
include("./vue/header.html");
if ($id==0) erreur(ERR_IS_NOT_CO);
?>
<div class="container-fluid">
<section id="content" class="page-content">
<div class="container text-center">
<h2>Déconnexion réussie!</h2><br>
<h4>A Bientôt</h4><br>
<p>Vous êtes à présent déconnecté <br/>
<!--Cliquez <a href="'.htmlspecialchars($_SERVER['HTTP_REFERER']).'">ici</a> pour revenir à la page précédente.<br>-->
Cliquez <a href="./espace_membre.php">ici</a> pour revenir à la page principale</p><br>
</div>
</div>
</section>
</div>
<?php
include("./vue/footer.html");
?>

View File

@@ -1,9 +1,9 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/espace/index.php');
}
include_once('./vue/footer.html');
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/espace/index.php');
}
include_once('./vue/footer.html');

View File

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 91 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 157 KiB

View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 163 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -1,5 +1,5 @@
<?php
include_once('./vue/header.html');
include_once('./vue/home/index.html');
include_once('./vue/footer.html');
?>
<?php
include_once('./vue/header.html');
include_once('./vue/home/index.html');
include_once('./vue/footer.html');
?>

View File

@@ -1,9 +1,9 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/inscription/index.php');
}
include_once('./vue/footer.html');
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/inscription/index.php');
}
include_once('./vue/footer.html');

View File

@@ -1,9 +1,9 @@
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/profil/index.php');
}
include_once('./vue/footer.html');
<?php
include_once('./vue/header.html');
include_once('./modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('./controleur/membre/profil/index.php');
}
include_once('./vue/footer.html');