PHP и с чем его едят....

Полностью согласен с коллегой, запомни akick, никогда, НИКОГДА не используй print_r для отладочного вывода а тем более для демонстрации начинающим колегам. Обязательно проверь на нул, приведи к массиву, сделай уникальным, и используй например доктрин для избежания проблем с sql инъекциями, таким образом твой код станет безопастным и достаточно непонятным начинающему балбесу чтобы патом ещё пару страниц объяснять сущность програмирования и программистов в целом.
 

Tvalk

New Member
Срочно нужны уроки по созданию интернет-магазина на php с подключенной БД mysql. Кто какие посоветует? Ссылки на исходники тоже обрадуют)))
 

[fly]

Sweet orange
Всем доброй ночи.
Знатоки, требуется совет! Не могу понять почему обработчик не правильно обрабатывает поле file. Уже мозги кипят!!! Поле file динамическое. Во-первых, добавляет лишнее поле в базу, во-вторых, одновременно загружается не больше 5ти фотографий.
Проверок нет, поэтому пожалуйста по сути проблемы дайте совет.
Для добавления полей file пользуюсь этим скриптом.
Код:
<!-- Для дополнитльных полей-->
<script>
function xdropFile(btn){
if(document.getElementById) {
tr = btn;
while (tr.tagName != 'TR') tr = tr.parentNode;
tr.parentNode.removeChild(tr);
xcheckForLast();
}
}
function xaddFile(btn){
if(document.getElementById) {
tr = btn;
while (tr.tagName != 'TR') tr = tr.parentNode;
var idSuffix = Math.round(Math.random()*1000);
var newTr = tr.parentNode.insertBefore(tr.cloneNode(true),tr.nextSibling);
thisChilds = newTr.getElementsByTagName('td');
for (var i = 0; i < thisChilds.length; i++){
if (thisChilds[i].className == 'header') thisChilds[i].innerHTML = '';
if (thisChilds[i].className == 'files') thisChilds[i].innerHTML = '<input size="32" name="file_name[]" class="wideFile" type="file">';
}
checkForLast();
}
}
function xcheckForLast(){
btns = document.getElementsByName('xdrop');
for (i = 0; i < btns.length; i++){
btns[i].disabled = (btns.length == 1) ? true : false;
}
}
</script>
<!-- конец -->

PHP:
// вывожу таблицу по id для добавления фотографий или редактирования названия фотоальбома
if ($_GET['do']=="editPhotoAlbom")	{
	$idAlbom=$_GET['idAlbom'];
	$q=mysql_query("SELECT * FROM `photo_alboms` WHERE(`id`='$idAlbom')");
	$r=mysql_fetch_array($q);
	echo "
	<form action='admin.php?event=controlPhotoGallery&do=editPhotoAlbom' method=post enctype=\"multipart/form-data\">
	<table class=box cellspacing=0 border=0 style=\"float:left\">
	<tr>
		<td class=td-box><h2>Добавление фотографий</h2></td>
	</tr>
	<tr>
		<td class=td-box>Название фотоальбома:</td>
	</tr>
	<tr>
		<td class=td-box><input size=60 type=text name=photoAlbomName value='".$r['photoAlbomName']."'></td>
	</tr>
	<tr>
		<td class=td-box>Добавьте фотографии:</td>
	</tr>
	<tr>
		<td class=td-box><input type=\"file\" size=\"32\" name=\"file_name[]\"><input type=\"button\" name=\"xdrop\" value=\" &minus; \" onClick=\"xdropFile(this);\"><input type=\"button\" value=\" + \" onClick=\"xaddFile(this);\"></td>
	</tr>
	<tr>
		<td>
		<input type=hidden name=idAlbom value='".$idAlbom."'>
		<input type=submit name=submit_saveEditPhotoAlbom value=' Добавить фотографии '></td>
	</tr>
</table></form>";



if (isset($_POST['submit_saveEditPhotoAlbom']))	{
	$photoAlbomName=$_POST['photoAlbomName'];
	$idAlbom=$_POST['idAlbom'];
	mysql_query("UPDATE `photo_alboms` SET `photoAlbomName`='$photoAlbomName' WHERE(`id`='$idAlbom')");

		$dir_name="files/PGallery/";
		for($i=0;$i<count($_FILES['file_name']);$i++)	{
			$file_name=$QWN_Code.$_FILES['file_name']['name'][$i];   
                        //$QWN_Code=$QWN_Code=uniqid("CODE_", TRUE); случайное число
			move_uploaded_file($_FILES['file_name']['tmp_name'][$i], $dir_name.$file_name);
			mysql_query("INSERT INTO `photos` VALUES(0, '$idAlbom', '$file_name', '$time', '$date')");
		}

	//echo("<script type=\"text/javascript\"> history.go(-1) </script>");
} else;
 

Dre.hz

Active Member
PHP:
	$idAlbom=$_GET['idAlbom'];
	$q=mysql_query("SELECT * FROM `photo_alboms` WHERE(`id`='$idAlbom')");
PHP:
    $photoAlbomName=$_POST['photoAlbomName']; 
    $idAlbom=$_POST['idAlbom']; 
    mysql_query("UPDATE `photo_alboms` SET `photoAlbomName`='$photoAlbomName' WHERE(`id`='$idAlbom')");
:!::!::!: ДЕТИ МОИ, ЗАКЛИНАЮ ВАС, НЕ ПИШИТЕ ТАК!!! ЭТО УЯЗВИМОСТЬ ДЛЯ SQL-ИНЪЕКЦИИ. :!::!::!:


И еще позаботьтесь о том, чтобы вам в довесок к инъекции через такой аплоад не закинули php файл. Ну или в случае закидывания не смогли бы его выполнить.
 
Останнє редагування:

[fly]

Sweet orange
Dre.hz, а как правильно делать запрос? И что на счет аплоадера? Почему он делает те ошибки?
 

dreamer

Member
Там у вас то checkForLast то xcheckForLast, это нормально?
В таком коде разбираться подробнее тяжело )
 

[fly]

Sweet orange
dreamer, признаюсь, писал его не я. Стырил как-то у яндекса. Судя по всему никто не поможет, да?
 

delf

======
Юзайте кохану. Там вообще ничего уметь не надо, она все за вас делает )
 
Зверху