Есть 2-а php-скрпта.
index.php -- здесь есть в левой стороне форма для ввода текста. Чтобы скрипт работал нужно всего навсего поменять имя картинки, которое стоит после слова "open" -- Let's open cool picture, X=180, Y=50, т.е. по умолчанию после слова "open" стоит "cool"... вот его и надо менять на имя картинки из списка. Если введённое имя существует среди картинок, то выводится эта картинка.
Это что-то на подобии анализатора текста, т.е. если в тексте встречается ключевое слово, то нужно выполнять какие-либо действия.
Проблема в этом скрипте (дизайнерская): я так и не смог сделать так, чтобы при загрузке большого рисунка слой в который он загружается не двигался вместе с документом, т.е. появляется скролл и он крутит весь документ, а не как задумывалось -- только слой.
pictures.php -- при загрузки новой картинки, файл отправляется на обработку этому скрипту и он просматривает всю папку с картинками и собирает имена файлов-картинок, а потом выводит их в
index.php. Также в его задачу входит генерация JavaScript'а, в котором будет обновлён массив с картинками для того, чтобы
index.php знал и мог обратиться к новым картинкам.
Я в PHP всего 2-3 дня, т.ч. хочется услышать критику кода, чтобы в дальнейшем не наступать на те же самые грабли (да ещё если не знаешь что лучше, тот или иной подход).
Скажу сразу: скрипт не мой -- это мне препод дал доработать его, т.ч. не судите меня я и так его запарился вычищать от ошибок (было просто громадное число ошибок: не закрытые тэги, например не были закрыты ни </head>, ни </body>, ни </html> -- короче препод не шибко любит хорошо-читаемый красивый безглючный код).
index.php я практически весь переработал от "неправильного" кода, а вот в
pictures.php -- 90% не переделано. После 54-строки я не стал его вычищать (запарило).
Вот собсна и скрипты:
index.php:
| Код |
<? ################################################################################ ##[ Отключение кэширования ]#################################################### ################################################################################ header('Expires: Mon, 13 Feb 1983 05:00:00 GMT'); // дата в прошлом // Контент всегда модифицируется header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1 header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); // HTTP/1.0 ################################################################################ ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content='text/html; charset=windows-1251'> <meta http-equiv="Cache-Control" content='no-cache'> <meta http-equiv="Pragma" content='no-cache'> <meta http-equiv="Expires" content='0'> <title>Образовательный портал, математика и программирование</title> <script type='text/javascript' src='phpgen.js'></script> <script type='text/javascript'> function initpics() { if (typeof(MyPics) == 'undefined') { MyPics = new Array(); MyPics[0] = 3; MyPics[1] = new Image(); MyPics[1].src = 'img/man.gif'; MyPics[1].alt = 'man'; MyPics[2] = new Image(); MyPics[2].src = 'img/sun.gif'; MyPics[2].alt = 'sun'; MyPics[3] = new Image(); MyPics[3].src = 'img/cool.gif'; MyPics[3].alt = 'cool'; //alert('initpics :: \n\ntypeof(MyPics) = '+typeof(MyPics)); } else { MyPics[0] = 0; for (var i = 1; i <= pics[0]; i++) { MyPics[i] = new Image(); MyPics[i].src = pics[i]; MyPics[i].alt = namepics[i]; } MyPics[0] = pics[0]; //alert('initpics :: \n\n'+'namepics = '+namepics); } }
function dialog(obj) { var X,Y; var text = obj.textin.value; var textArray = text.split(","); var i;
if (textArray[0].indexOf('open') > -1) { try { i = textArray[1].indexOf('='); X = textArray[1].substr(i+1); i = textArray[2].indexOf('='); Y = textArray[2].substr(i+1); } catch (e) { alert('Произошла ошибка! В строках: [55-58]'); return; } for (i = 1; i <= MyPics[0]; i++) if (text.indexOf(MyPics[i].alt) > -1) { text = 'open "'+MyPics[i].alt+'" X='+X+'; Y='+Y; obj.textout.value = text; document.getElementById('forImg').innerHTML = '<img src="'+MyPics[i].src+'" style="position: absolute; left: '+X+'; top: '+Y+'"'+' alt="'+MyPics[i].alt+'">'; //alert('Yes:\n\nMyPics['+i+']:\n src = '+MyPics[i].src+'\n alt = '+MyPics[i].alt+'\nMyPics[0] = '+MyPics[0]) break; } // else alert('No:\n\nMyPics['+i+']:\n src = '+MyPics[i].src+'\n alt = '+MyPics[i].alt+'\nMyPics[0] = '+MyPics[0]+'\npics[0] = '+pics[0]); } }
function addtext(obj) { var selNum = obj.textselector.selectedIndex; var selText = obj.textselector.options[selNum].text; obj.textin.value = selText; document.form1.textin.focus(); } </script> <style type='text/css'> /*a {color: white}*/ img {border-width: 0} </style> </head>
<body> <table width="100%" height="100%" cellspacing="0" cellpadding="0" align="center"> <tr valign="top"><td width="42%">
<!-- Левая сторона --> <table width="98%" cellSpacing="0" cellPadding="8" bgColor="#F1E7E4"> <tbody> <tr><td borderColor="#EEAA00"><!-- поля для ввода --> <form name="form1" onSubmit="return false"> <input type="button" value="Анализ текста" onClick="dialog(form1)"> <select name="textselector" onChange="addtext(form1)"> <option>Text</option> <option>Let's open man picture, X=180, Y=50</option> <option>Let's open sun picture, X=180, Y=50</option> <option>Let's open cool picture, X=180, Y=50</option> </select> <p> <textarea align="center" name="textin" rows="5" style='width: 100%'>Let's open cool picture, X=180, Y=50</textarea><br> <textarea align="center" name="textout" rows="5" style='width: 100%'></textarea> </p> </form> <script type='text/javascript'> initpics(); document.form1.textin.focus(); </script> </td></tr> <tr><td> <!-- Слой для вставки картинок --> <div id='forImg' style='position: relative'></div> </td></tr> </tbody> </table>
</td> <td>
<!-- Правая сторона --> <table width="100%" height="100%" cellspacing="0" cellpadding="0"> <tr><td height="5%" valign="top"><!-- шапка со счётчиком --> <hr> <div style='background-color: #EEEEEE'> CE Буфер рисунков... Visited: <? $counterval = 0; $fp = fopen("loganalysis.txt", "r"); $counterval = fread($fp, 26 ); fclose($fp); $counterval = (integer)$counterval + 1; $fp = fopen("loganalysis.txt", "w+"); fwrite($fp, $counterval, 26); fclose($fp); print "$counterval"; ?> </div> <hr> </td></tr> <tr><td height="8%" align="center" valign="middle" bgcolor="#AADDFF"> <!-- Форма загрузки картинок на сервер --> <form action='pictures.php' method="POST" enctype="multipart/form-data" style='margin: 0'> <input type="file" name="File"> <input type="submit" name="doUpload" value="Upload"> </form> </td></tr> <tr><td><!-- слой с показываемыми картинками --> <div align="center" style='width: 100%; height: 100%; '><? include('pictures.php'); ?></div> </td></tr> </table>
</td></tr> <!-- Слой с копирайтами --> <tr><td height="5%" colspan="2" align="center" valign="bottom" style='font: bold 10pt serif'> V M A T L A B<br> <span class="copyright">© 2005 Общеобразовательный портал</span> </td></tr> </table> </body> </html>
|
pictures.php:
| Код |
<? $ImgDir = "img"; @mkdir($ImgDir,0755);
if (@$_POST['doUpload'] && @file_exists($_FILES['File']['tmp_name'])) Copy($_FILES['File']['tmp_name'], "$ImgDir/".$_FILES['File']['name']);
$d = opendir($ImgDir); $Photos = array();
while (($e = readdir($d)) !== false) { if (!ereg("^(.*)\\.(gif|GIF|jpg|JPG|png|PNG|zip|ZIP|doc|DOC|txt|TXT)$",$e,$P)) continue; $path = "$ImgDir/$e"; $sz = GetImageSize($path); $Photos[] = array('time' => filemtime($path), 'name' => $e, 'url' => $path, 'w' => $sz[0], 'h' => $sz[1], 'wh' => $sz[3]); } krsort($Photos);
$ServerUrl = 'http://'.$HTTP_SERVER_VARS['SERVER_NAME'].$HTTP_SERVER_VARS['PHP_SELF']; $ServerUrl = substr($ServerUrl, 0, strrpos($ServerUrl, '/')).'/';
foreach ($Photos as $value) foreach ($value as $key => $val) if ($key == 'name') $ImgAName[] = '"' . substr($val, 0, strpos($val, '.')) . '"'; elseif ($key == 'url') $ImgAUrl[] = '"' . $ServerUrl . $val . '"';
$ImgANameImp = implode(',', $ImgAName); $ImgAUrlImp = implode(',', $ImgAUrl);
$fhandle = fopen('phpgen.js', 'w');
$JSContent = "pics = [" . count($ImgAUrl) . "," . $ImgAUrlImp . "];\n"; $JSContent .= "namepics = [" . count($ImgAName) . "," . $ImgANameImp . "];\n"; $JSContent .= "MyPics = [];\n";
fwrite($fhandle, $JSContent); fclose($fhandle);
if (isset($_POST['doUpload'])) { ################################################################################ ##[ Отключение кэширования ]#################################################### ################################################################################ header('Expires: Mon, 13 Feb 1983 05:00:00 GMT'); // дата в прошлом // Контент всегда модифицируется header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1 header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); // HTTP/1.0 ################################################################################ header('Location: index.php'); // перенаправление на главную (для обновления картинок) exit; } ################################################################################ $counter = 0; $counter2 = 0; echo '<table width="300">'; foreach ($Photos as $n => $Img) { $icon = 1; $extens = explode(".", $Img['url']); switch ($extens[count($extens)-1]) { case 'zip': $icon=2; break; case 'ZIP': $icon=2; break; case 'rar': $icon=2; break; case 'RAR': $icon=2; break; case 'doc': $icon=3; break; case 'DOC': $icon=3; break; case 'txt': $icon=3; break; case 'TXT': $icon=3; break; }
if ($counter2 == 0) echo '<tr>'; echo '<td><center>'; $extens = explode("/", $Img['url']);
if ($counter >= 6) { if ($counter == 6) echo '<P>'; if ($icon == 1) echo '<a href="'.$Img['url'].'" target="_blank"><img src="disk.jpg" hspace="1" vspace="5"></a>'; else if ($icon == 3) echo '<a href="'.$Img['url'].'" target="_blank"><img src="disk.jpg" hspace="1" vspace="5"><br><center>'.$extens[count($extens)-1].'</a>'; else echo '<a href="'.$Img['url'].'" target="_blank"><img src="zip.gif" height="22" width="22" hspace="1" vspace="5"><br>'.$extens[count($extens)-1].'</a>'; } else { $img_params = getimagesize($Img['url']); $height = ($img_params[1] > 280) ? 280 : $img_params[1]; if ($icon == 1) echo '<a href="'.$Img['url'].'" target="_blank"><img src='.$Img['url'].' height='.$height.' hspace="1" vspace="5"><br><center>'.$extens[count($extens)-1].'</a>'; else if ($icon==3) echo '<a href="'.$Img['url'].'" target="_blank"><img src="disk.jpg" hspace="1" vspace="5"><br><center>'.$extens[count($extens)-1].'</a>'; else echo '<a href="'.$Img['url'].'" target="_blank"><img src="zip.gif" height="22" width="22" hspace="1" vspace="5"><br><center>'.$extens[count($extens)-1].'</a>'; } $counter++; $counter2++; echo '</td>'; if ($counter2 == 3) { echo '</tr>'; $counter2 = 0; } } echo '</table>'; ?>
|
Это сообщение отредактировал(а) Ciber SLasH - 20.6.2005, 00:49
Присоединённый файл ( Кол-во скачиваний: 0 )
temp.zip 4,53 Kb