6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)
  • Q:
    Bijdrager
    martijnG

    post probleem vanuit een form ( multipart/form-data )

    Ik ben bezig met een simpel content management systeempje zonder database. Ik ben hem aan het schrijven zodat ie op een standaard configuratie van apache +php +gd op macosX server draaid.

    Het vreemde is nu:
    Alle post’s worden afgehandeld door de admin.php ($PHP_SELF), en werken naar behoren.
    Alleen de Post die ik doe met:
    echo “<form action=\””.$PHP_SELF.”\” enctype=\”multipart/form-data\” method=\”post\”>rn”;

    voert wel de functie (imageUpload) wel uit, maar laat niets van de admin.php zien.
    ( dus de posts werken wel, functie wordt uitgevoerd, maar laat niets zien van de pagina waar de funtie in staat ( de admin.php ))

    Het rare is, is dat het wel werkt op mijn lokale machine, op onze normale server, op een PC met Apache, maar niet op de standaard MacOSX Apache.

    post ( enctype=\”multipart/form-data\” ) data op een andere manier, heeft het het heades te maken?
    Ik begrijp het niet…

    ( Mocht iemand geïnteresseerd zijn om samen verder te ontwikkelen van de admin tool laat me dan een bericht achter )

    Bijdrager
    basvandorst

    Lig het nou aan het HTML gedeelte of aan admin.php?
    IE onder Mac heeft trouwens wel meer problemen met dat soort dingen:
    https://lists.latech.edu/pipermail/javascript/2002-July/003884.html

    ligt het aan admin.php? kun je dan is een stukje code posten?

    Bijdrager
    martijnG

    De code zoals ie hier ebruikt wordt werkt wel op mijn eien apache en op de server, maar niet op een standaard PHP MacOSX configuratie…. ( Hij voert de functie wel uit, maar echoot geen html naar de browser )

    Stukje uit de admin.php

    ( HTML ERUIT GESLOOPT )

    het post gebeuren…
    [code:1:d40e11f577]
    echo "<form action="".$PHP_SELF."" enctype="multipart/form-data" method="post">rn";
    echo "<input type="file" name="pictureUpload">rn";
    echo "<input type="text" name="namePicture" size="16"><b> .jpg</b>rn";
    echo "<input type="text" name="qualityPicture" size="3" value="75">
    echo "<input type="text" name="maxx" size="4" value="800" maxlength="4">rn";
    echo "<input type="text" name="maxy" size="4" maxlength="4" value="600">rn";
    echo "<input type="submit" value="upload">rn";
    echo "<input type="hidden" name="task" value="uploadPicture">rn";
    echo "<input type="hidden" name="section" value="".$section."">rn";
    echo "<input type="hidden" name="selectMainButton" value="".$selectMainButton."">rn";
    echo "<input type="hidden" name="selectSubButton" value="".$selectSubButton."">rn";
    echo "</form>rn";
    [/code:1:d40e11f577]

    Een stukje uit de $task switch
    [code:1:d40e11f577]
    case "uploadPicture":
    uploadPicture($pictureUpload, $basePath, $selectMainButton, $selectSubButton, $namePicture, $qualityPicture, $maxx, $maxy );
    break;
    [/code:1:d40e11f577]

    upload picture functie

    [code:1:d40e11f577]
    function uploadPicture($pictureUpload, $basePath, $selectMainButton, $selectSubButton, $namePicture, $qualityPicture, $maxx, $maxy ) {

    if ($_FILES[’pictureUpload’][’type’] == "image/jpeg") {

    global $replace;

    if (!is_numeric($maxx) || is_numeric(!$maxy)) {
    die("<font color=red><b>ongeldige waarde</b></font><br>n");
    }

    if(empty($namePicture)) {
    if(empty($_FILES[’pictureUpload’][’name’])) {
    $namePicture = date("Ymd")."jpg";
    } else {
    $namePicture = $_FILES[’pictureUpload’][’name’];

    }
    }
    $namePicture = explode(".", $namePicture);
    $namePicture = $namePicture[0].".jpg";

    $copyPath = $basePath.$selectMainButton."/".strtr($selectSubButton,$replace)."/".$namePicture;

    // verplaatst de afbeelding
    move_uploaded_file( $_FILES["pictureUpload"]["tmp_name"], $copyPath);

    if(is_file($copyPath)) {

    $size = GetImageSize($copyPath);

    if( $maxx > 1280 || $maxy > 1024 ) {
    $maxx = 1280;
    $maxy = 1024;
    }

    if($size[0] <= $maxx && $size[1] <= $maxy){
    $sizemin[0] = $size[0];
    } else {
    if ($size[1] < $size[0]){
    $sizemin[0] = $maxx;
    } else {
    $sizemin[0] = $maxy;
    }
    }

    $newh1 = $size[1] / $size[0];
    $sizemin[1] = $newh1 * $sizemin[0];

    $im=@imagecreatefromjpeg($copyPath);
    $small = imagecreatetruecolor($sizemin[0], $sizemin[1]);
    ImageCopyResampled($small, $im, 0, 0, 0, 0, $sizemin[0], $sizemin[1], $size[0], $size[1]);

    ImageDestroy($im);
    chmod($copyPath, 0755);

    if (!ImageJPEG($small,$copyPath,$qualityPicture)) {
    echo "<font color=red><b>";
    echo "Afbeelding is niet ge-upload";
    echo "</b></font><br>n";
    }

    foreach($_POST as $key => $value) {
    echo $key." &bull; ".$value."<br>";
    }
    }
    }
    }
    [/code:1:d40e11f577][code:1:d40e11f577][/code:1:d40e11f577]

    Bijdrager
    mac748

    Op mijn OSX configuratie werkt $PHP_SELF niet, maar wel $_SERVER[‘PHP_SELF’].
    Misschien ligt het aan register_globals, ik weet het niet.

    Bijdrager
    Macinspire

    kan inderdaad liggen aan de instellingen in apache(httpd.conf) of php(php.ini).
    Waarom geef je het niet gewoon aan door middel van
    [code:1:1a49f002a8] echo "<form action="admin.php"enctype="multipart/form-data" method="post">rn"; [/code:1:1a49f002a8]
    Waarom doe je het uberhaupt met PHPSELF?
    Welke versie van php draai je?

    Opmerking: Introduced in 4.1.0. In earlier versions, use $HTTP_SERVER_VARS.

    TIP:
    Wanneer je code maakt waar meer html in voorkomt als php, probeer het dan gewoon als html te laten zien? Dat is een stuk duidelijker.

    [code:1:1a49f002a8]?>
    <form action="admin.php" enctype="multipart/form-data" method="post">
    <input type="file" name="pictureUpload">
    <input type="text" name="namePicture" size="16"><b> .jpg</b>
    <input type="text" name="qualityPicture" size="3" value="75">
    <input type="text" name="maxx" size="4" value="800" maxlength="4">
    <input type="text" name="maxy" size="4" maxlength="4" value="600">
    <input type="submit" value="upload">
    <input type="hidden" name="task" value="uploadPicture">
    <input type="hidden" name="section" value="<? echo $section; ?>">
    <input type="hidden" name="selectMainButton" value="<? echo $selectMainButton; ?>">
    <input type="hidden" name="selectSubButton" value="<? echo $selectSubButton; ?>">
    </form>
    <?[/code:1:1a49f002a8]

    Bijdrager
    martijnG

    Macinspire, de admin.php bestaat voor het grootste gedeelte uit php, en ik wil niet contant de PHP escapen, Daarbij heb ik functies gemaakt van de talellen td’s en tr’s die in de admin staan.

    de admin file is nu al meer dan 1100 lijnen, dus probeer ik de code zo klein mogelijk te maken door zo veel mogelijlk gebruik te maken van functies. Daarbij, als ik een verandering wil in hoe de tabellen zicht gedragen hoef ik maar 1 funtie aan te passen.
    daarnaast, is het erg gemakkkelijk om niet aan de uitlijning van de source in de browser te hoeven na denken.

    Ook van PHPSELF weet ik dat het werkt, dit werkt ook in de tientalle POST die in de andere delen zitten.

    [code:1:392eacb4a6]
    function tableOpen($class) {
    if ($class) { $class = " class="".$class."""; }
    echo "<table border="0" cellspacing="0" cellpadding="0"".$class.">rn";
    }

    function tableClose() { echo "</table>rn"; }

    function trOpen() { echo "t<tr>rn"; }
    function trClose() { echo "t</tr>rn"; }

    function tdOpen( $width, $align, $colspan, $class) {

    if ($width) { $width = " width="".$width."""; }
    if ($align) { $align = " align="".$align."""; }
    if ($colspan) { $colspan = " colspan="".$colspan."""; }
    if ($class) { $class = " class="".$class."""; }

    echo "tt<td".$width.$align.$colspan.$class." valign="baseline">rn";
    }

    function tdClose() { echo "tt</td>rn"; }
    [/code:1:392eacb4a6]

    Mocht ik er niet op een mooie manier uit kunnen komen, dan rediect ik de page met een:
    header(“Location: http://www.voorbeeld.nl/&#8221;)

6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.