Page 1 sur 1

Problème de formulaire PHP

Posté : 15 sept. 2015, 23:06
par CHSCT
Bonsoir à tous,
Je tente depuis pas mal de temps de créer un formulaire... sans grand succès :(
Je suis donc parti sur un template Bootstrap, en remplissant correctement (J'espère) ce qui devait l'être (adresse de serveur, mon email etc...). Le formulaire accepte (enfin) les messages et les envois... mais je ne les reçois pas :/
Le lien : http://sunrisecoffeeshopaddict.org/form.html
Le fichier PHP :
<?php

if(!isset($_GET['s'])) {
	die('You must define a search term!');
}

$highlight = true;//highlight results or not
$search_in = array('html', 'htm');//allowable filetypes to search in
$search_dir = '../';//starting directory
$recursive = true;//should it search recursively or not
define('SIDE_CHARS', 80);
$file_count = 0;
$search_term = mb_strtolower($_GET['s'], 'UTF-8');
//$search_term = $_GET['s'];
$search_term_length = strlen($search_term);
$final_result = array();

$files = list_files($search_dir);

foreach($files as $file){
	$contents = file_get_contents($file);
	preg_match("/\<title\>(.*)\<\/title\>/", $contents, $page_title); //getting page title
	if (preg_match("#\<body.*\>(.*)\<\/body\>#si", $contents, $body_content)){ //getting content only between <body></body> tags
		$clean_content = strip_tags($body_content[0]); //remove html tags
		$clean_content = preg_replace( '/\s+/', ' ', $clean_content ); //remove duplicate whitespaces, carriage returns, tabs, etc
	
	//$found = strpos_recursive($clean_content, $search_term);
	$found = strpos_recursive(mb_strtolower($clean_content, 'UTF-8'), $search_term);
	$final_result[$file_count]['page_title'][] = $page_title[1];
	$final_result[$file_count]['file_name'][] = $file;
}
	if($found && !empty($found)) {
		for ($z = 0; $z < count($found[0]); $z++){
			$pos = $found[0][$z][1];
			$side_chars = SIDE_CHARS;
			if ($pos < SIDE_CHARS){
				$side_chars = $pos;
				$pos_end = SIDE_CHARS + $search_term_length;
			}else{
				$pos_end = SIDE_CHARS*2 + $search_term_length;
			}

			$pos_start = $pos - $side_chars;
			$str = substr($clean_content, $pos_start, $pos_end);
			$result = preg_replace('#'.$search_term.'#ui', '<span class="search">\0</span>', $str);
			//$result = preg_replace('#'.$search_term.'#ui', '<span class="search">'.$search_term.'</span>', $str);
			$final_result[$file_count]['search_result'][] = $result;
		}
	} else {
		$final_result[$file_count]['search_result'][] = '';
	}
	$file_count++;
}
?>
<!DOCTYPE HTML>
<html lang="en-US" class="iframe">
<head>
	<title>Search results</title>	
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
	<link rel="stylesheet" href="../css/bootstrap.css" type="text/css" media="screen">
	<link rel="stylesheet" href="../css/style.css" type="text/css" media="screen">
	<link rel="stylesheet" href="search.css" type="text/css" media="screen">

</head>
<body>
<script type="text/javascript">
;(function(){	
	document.body.onload=resize
	window.onresize=resize
	
	function resize(){
		parent._resize(document.getElementById('search-results').offsetHeight)
	}
})()
</script>

	<div id="search-results">
		<ol class="search_list">
	<?php
		$match_count = 0;
		for ($i=0; $i < count($final_result); $i++){
			if (!empty($final_result[$i]['search_result'][0]) || $final_result[$i]['search_result'][0] !== ''){
				$match_count++;
	?>
			<li>
				<h3 class="search_title"><a target="_top" href="<?php echo $final_result[$i]['file_name'][0]; ?>" class="search_link"> <?php echo $final_result[$i]['page_title'][0]; ?> </a></h3>
				...<?php echo $final_result[$i]['search_result'][0]; ?>...
				<span class="match">Terms matched: <?php echo count($final_result[$i]['search_result']); ?> - URL: <?php echo $final_result[$i]['file_name'][0]; ?></span>
			</li>
	<?php
			}
		}
		if ($match_count == 0) {
			echo '<h3>No results found for <span class="search">'.$search_term.'</span></h3>';
		}
	?>
		</ol>
	</div>

</body>
</html>


<?php
//lists all the files in the directory given (and sub-directories if it is enabled)
function list_files($dir){
	global $recursive, $search_in;

	$result = array();
	if(is_dir($dir)){
		if($dh = opendir($dir)){
			while (($file = readdir($dh)) !== false) {
				if(!($file == '.' || $file == '..')){
					$file = $dir.'/'.$file;
					if(is_dir($file) && $recursive == true && $file != './.' && $file != './..'){
						$result = array_merge($result, list_files($file));
					}
					else if(!is_dir($file)){
						if(in_array(get_file_extension($file), $search_in)){
							$result[] = $file;
						}
					}
				}
			}
		}
	}
	return $result;
}

//returns the extention of a file
function get_file_extension($filename){
	$result = '';
	$parts = explode('.', $filename);
	if(is_array($parts) && count($parts) > 1){
		$result = end($parts);
	}
	return $result;
}

function strpos_recursive($haystack, $needle, $offset = 0, &$results = array()) {               
    $offset = stripos($haystack, $needle, $offset);
    if($offset === false) {
        return $results;           
    } else {
        $pattern = '/'.$needle.'/ui';
	preg_match_all($pattern, $haystack, $results, PREG_OFFSET_CAPTURE);
		return $results;
    }
}
?>
Merci à vous et bonne soirée,
CHSCT

Re: Problème de formulaire PHP

Posté : 15 sept. 2015, 23:21
par or 1
c'est le code php de http://sunrisecoffeeshopaddict.org/bat/MailHandler.php dont on a besoin pour voir l'envoi de l'email.

Re: Problème de formulaire PHP

Posté : 16 sept. 2015, 00:17
par CHCT
Bonsoir,
Le code "bat/MailHandler.php" est celui que j'ai publié lors de la question.
Une idée ? Je suis réellement perdu.
Merci

Re: Problème de formulaire PHP

Posté : 16 sept. 2015, 01:34
par or 1
je clique sur le lien, j'obtiens :
mail failed
ce texte figure-t-il dans cette page ? non, et aucun fichier n'est inclus.
donc non, on n'a pas le bon code.

Re: Problème de formulaire PHP

Posté : 16 sept. 2015, 10:21
par CHSCT
Bonjour,
Désolé pour l'erreur du lien :p Le bon :
http://sunrisecoffeeshopaddict.org/form
Bonne journée,
C.

Re: Problème de formulaire PHP

Posté : 16 sept. 2015, 11:55
par CHSCT
re_bonjour,
Bon, finalement le formulaire fonctionne. Il suffit de ne pas inscrire n'importe quoi (nom, adresse mail...) sinon le message est "envoyé" mais n'est pas réceptionné (aucune trace du message, ce qui reste un problème -?-). En inscrivant une adresse mail correcte (même inventée), je reçois bien le message :)
Des choses sont peut-être à revoir dans le php ?
Bonne journée,
C.

Re: Problème de formulaire PHP

Posté : 16 sept. 2015, 14:36
par ynx
Salut,
Il semble que le code php posté ne soit pas le bon : il n'y a pas de traitement de formulaire (hormis $_GET['s']) ni d'envoi de mail.
Peux tu nous poster le code correspondant au traitement de ton formulaire ?

Re: Problème de formulaire PHP

Posté : 16 sept. 2015, 19:45
par CHSCT
Slt ynx,
Encore une erreur de ma part :/ Le code php :
<?php
	$owner_email = $_POST["[email protected]"];
	$headers = 'From:' . $_POST["email"];
	$subject = 'A message from your site visitor ' . $_POST["name"];
	$messageBody = "";
	
	if($_POST['name']!='nope'){
		$messageBody .= '<p>Visitor: ' . $_POST["name"] . '</p>' . "\n";
		$messageBody .= '<br>' . "\n";
	}
	if($_POST['email']!='nope'){
		$messageBody .= '<p>Email Address: ' . $_POST['email'] . '</p>' . "\n";
		$messageBody .= '<br>' . "\n";
	}else{
		$headers = '';
	}
	if($_POST['state']!='nope'){		
		$messageBody .= '<p>State: ' . $_POST['state'] . '</p>' . "\n";
		$messageBody .= '<br>' . "\n";
	}
	if($_POST['phone']!='nope'){		
		$messageBody .= '<p>Phone Number: ' . $_POST['phone'] . '</p>' . "\n";
		$messageBody .= '<br>' . "\n";
	}	
	if($_POST['fax']!='nope'){		
		$messageBody .= '<p>Fax Number: ' . $_POST['fax'] . '</p>' . "\n";
		$messageBody .= '<br>' . "\n";
	}
	if($_POST['message']!='nope'){
		$messageBody .= '<p>Message: ' . $_POST['message'] . '</p>' . "\n";
	}
	
	if($_POST["stripHTML"] == 'true'){
		$messageBody = strip_tags($messageBody);
	}
	
	try{
		if(!mail($owner_email, $subject, $messageBody, $headers)){
			throw new Exception('mail failed');
		}else{
			echo 'mail sent';
		}
	}catch(Exception $e){
		echo $e->getMessage() ."\n";
	}
?>
Avec ce dernier, je reçois environ une réponse sur trois (mieux que rien, en attendant mieux ? ;)
Bonne soirée,
C

Re: Problème de formulaire PHP

Posté : 16 sept. 2015, 20:25
par or 1
$headers = 'From:' . $_POST["email"];
mettre plutôt une valeur fixe qui fait que le mail parte, et ajouter $_POST["email"] dans le contenu du mail ou le champ reply to.

Re: Problème de formulaire PHP

Posté : 17 sept. 2015, 15:33
par CHSCT
Merci pour ta réponse or 1,
Malheureusement c'est la première fois que je tombe sur du php et je ne comprends pas trop. Peux-tu m'en dire plus ?
Désolé :/
Bon après-midi,
C.