Annotation of /mambo/branches/4.6/includes/captcha-audio.php
Parent Directory
|
Revision Log
Revision 948 - (view) (download)
| 1 : | neilt | 864 | <?php |
| 2 : | alwarren | 870 | /** |
| 3 : | * Captcha audio handling for Mambo | ||
| 4 : | * @package Mambo | ||
| 5 : | cauld | 948 | * @copyright Refer to copyright.php |
| 6 : | alwarren | 870 | * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL |
| 7 : | * @author Mambo Foundation Inc see README.php | ||
| 8 : | */ | ||
| 9 : | neilt | 864 | |
| 10 : | neilt | 869 | defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); |
| 11 : | neilt | 864 | |
| 12 : | neilt | 869 | global $mosConfig_lang, $mosConfig_absolute_path; |
| 13 : | |||
| 14 : | neilt | 864 | session_name('mos_captcha'); |
| 15 : | session_start(); | ||
| 16 : | $code = $_SESSION['code']; | ||
| 17 : | |||
| 18 : | // language select (for future addition of own wav files) | ||
| 19 : | neilt | 869 | $lang = $mosConfig_absolute_path.'/includes/captchaAudio/'.$mosConfig_lang.'/'; |
| 20 : | if (!is_dir($lang)) { | ||
| 21 : | $lang = $mosConfig_absolute_path.'/includes/captchaAudio/en/'; | ||
| 22 : | } | ||
| 23 : | neilt | 865 | |
| 24 : | neilt | 864 | $wavs = array(); |
| 25 : | |||
| 26 : | for($i=0;$i<5;$i++){ | ||
| 27 : | $file = $lang.$code{$i}.'.wav'; | ||
| 28 : | $wavs[] = $file; | ||
| 29 : | } | ||
| 30 : | |||
| 31 : | //$totalsize = filesize($filename); | ||
| 32 : | header("Cache-Control: no-cache, must-revalidate"); | ||
| 33 : | header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); | ||
| 34 : | header('Content-type: audio/x-wav'); | ||
| 35 : | header("Content-Transfer-Encoding: binary"); | ||
| 36 : | //header("Content-Length: ".$totalsize); | ||
| 37 : | header('Content-Disposition: attachment;filename=captcha.wav'); | ||
| 38 : | |||
| 39 : | echo joinwavs($wavs); | ||
| 40 : | |||
| 41 : | /** | ||
| 42 : | * CAPTCHA antispam plugin - sound generator | ||
| 43 : | * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) | ||
| 44 : | * @author Andreas Gohr <gohr@cosmocode.de> | ||
| 45 : | */ | ||
| 46 : | neilt | 865 | |
| 47 : | neilt | 864 | function joinwavs($wavs){ |
| 48 : | $fields = join('/',array( 'H8ChunkID', 'VChunkSize', 'H8Format', | ||
| 49 : | 'H8Subchunk1ID', 'VSubchunk1Size', | ||
| 50 : | 'vAudioFormat', 'vNumChannels', 'VSampleRate', | ||
| 51 : | 'VByteRate', 'vBlockAlign', 'vBitsPerSample' )); | ||
| 52 : | |||
| 53 : | $data = ''; | ||
| 54 : | neilt | 865 | |
| 55 : | neilt | 864 | foreach($wavs as $wav){ |
| 56 : | $fp = fopen($wav,'rb'); | ||
| 57 : | $header = fread($fp,36); | ||
| 58 : | $info = unpack($fields,$header); | ||
| 59 : | if($info['Subchunk1Size'] > 16){ | ||
| 60 : | $header .= fread($fp,($info['Subchunk1Size']-16)); | ||
| 61 : | } | ||
| 62 : | $header .= fread($fp,4); | ||
| 63 : | $size = unpack('vsize',fread($fp, 4)); | ||
| 64 : | $size = $size['size']; | ||
| 65 : | $data .= fread($fp,$size); | ||
| 66 : | } | ||
| 67 : | |||
| 68 : | return $header.pack('V',strlen($data)).$data; | ||
| 69 : | } | ||
| 70 : | |||
| 71 : | ?> |
| ViewVC Help | |
| Powered by ViewVC 1.0.0 |
Web Hosting provided by Network Redux.

