php

マークアップエンジニアとかWEBディレクターとかをやってる僕が、自分が詰まって、解決したことをここに残しておきますよ。

サーバーでphpが動くかどうかテストする

test.php


<html>
 <head>
  <title>php動くの?</title>
 </head>
 <body>
 <?php echo '動いてるよ!'; ?> 
 </body>
</html> 


 

wordpressで記事一覧を出す

wordpressで記事一覧のタイトルを出したいとき。

<?php
$posts = get_posts('numberposts=0');
global $post;
?>
<?php if($posts): foreach($posts as $post): setup_postdata($post); ?>
<?php the_title(); ?>
<?php endforeach; endif;?>

numberposts=0

を5とかにすれば5件でる。 

記事の日付も出したいときは
<?php the_time('Y年m月d日'); ?>
を使う。 

記事へリンクをつけたいときは
<a href="<?php the_permalink(); ?>">
を使う。

 

phpで?(はてな)と:(コロン)が出てきて混乱した人、それは三項演算子というやつです

php勉強してたらサンプルプログラムで
「?」と「:」が使われた一文が出てきて混乱した人いるかい?

あたしだよ! (古い)


神dotinstall様 のphpでログインを作る授業で関数内に

return $user ? $user : false;

というのが出てきました。 

三項演算子のルールは

A ? B : C

Aがtrueの場合はBを実行する
Aがfalseの場合はCを実行する 


という意味
「Aなの?そうならBね、違うならCね」みたいな文章というわけ。

戻って、dotinstall御中の式を分解すると、

return $user ? $user : false; 

$userが存在するなら、$userを返す
存在しないならfalseを返す


っていう意味でした。

 

EC-CUBEでupgradeフォルダを消したら全部壊れた

EC-CUBEで、htmlディレクトリの中にupgradeというディレクトリがある。

インストール後に生成されるディレクトリなのだが、
モジュールをインストールする際に、あやまって削除してしまったら、

EC-CUBEの表画面がトップ以外全部壊れてしまった。

ぐぐったけど解決策らしきものは見当たらず、
やむなく出来る限りのバックアップをとって、再インストール。

2時間かかった・・・。


upgradeディレクトリには、index.phpというファイル1つのみが入っていて、
あらためて見てみると、ほんの50行程度のphpプログラムが入っている。

 
インストール後に生成される以上、条件によって違うファイルになるのだろうが、
同じ過ちをやっちまった人のために、index.phpの中味を晒しておく。

<?php
//$_SERVER['REQUEST_METHOD'] = 'POST';
//$_POST['mode'] = 'products_list';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header("HTTP/1.1 400 Bad Request");
    exit();
}

// {{{ requires
require_once '../require.php';
require_once '../' . ADMIN_DIR . 'require.php';

// }}}
// {{{ generate page

$mode = isset($_POST['mode']) ? $_POST['mode'] : '';
$objPage = lfPageFactory($mode);
$objPage->init();
register_shutdown_function(array($objPage, "destroy"));
$objPage->process($mode);


function lfPageFactory($mode) {
    $prefix = 'LC_Page_Upgrade_';
    $file   = CLASS_REALDIR . "pages/upgrade/${prefix}";
    $class  = $prefix;

    switch ($mode) {
    case 'products_list':
        $file  .= 'ProductsList.php';
        $class .= 'ProductsList';
        break;
    case 'patch_download':
    case 'download':
    case 'auto_update':
        $file  .= 'Download.php';
        $class .= 'Download';
        break;
    case 'site_check':
        $file  .= 'SiteCheck.php';
        $class .= 'SiteCheck';
        break;
    default:
        header("HTTP/1.1 400 Bad Request");
        GC_Util::gfPrintLog("modeの値が正しくありません。:".$mode);
        exit();
        break;
    }

    require_once $file;
    return new $class;
}
?>

 万が一にもこれのコピペでupgrade/index.phpにアップしてみて
直る人がいたら、ラッキーですよね。

phpエラー 「Cannot modify header information」「headers already sent by ***」

phpでいつものようにフォームを作っていたら、
メール送信の段階でエラーになっちゃった。

メールは届いてるけど、thankyouページに飛んでいかない。
真っ白な画面になってしまう。

しょうがないので、まずはエラー文を出すようにする。

<?php
のすぐ下にエラーを表示するよーという指示を入れる。

<?php
ini_set( 'display_errors', 1 );
 

そしたら、エラー文がでましたよ。


WARNING Cannot modify header information
headers already sent by(ナンチャラカンチャラ)

 調べてみたら、phpの最後の行に、改行が入っていたようで。

php?>

最後に改行が入ってるとエラーになるみたいっす。

気をつけよう。 
記事検索

リモキュー

お仕事のご依頼・お問い合わせはこちら

コーディングのお仕事が得意です。

https://twitter.com/tacshock
タグクラウド
QRコード
QRコード
  • ライブドアブログ