Skip to content

Commit

Permalink
Basic validation component
Browse files Browse the repository at this point in the history
  • Loading branch information
phalcon committed Feb 14, 2013
1 parent 2d6b298 commit 1361303
Show file tree
Hide file tree
Showing 19 changed files with 1,450 additions and 202 deletions.
2 changes: 1 addition & 1 deletion ext/config.m4
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ PHP_ARG_ENABLE(phalcon, whether to enable phalcon framework, [ --enable-phalcon

if test "$PHP_PHALCON" = "yes"; then
AC_DEFINE(HAVE_PHALCON, 1, [Whether you have Phalcon Framework])
PHP_NEW_EXTENSION(phalcon, phalcon.c kernel/main.c kernel/fcall.c kernel/require.c kernel/debug.c kernel/assert.c kernel/object.c kernel/array.c kernel/string.c kernel/filter.c kernel/operators.c kernel/concat.c kernel/exception.c kernel/file.c kernel/memory.c kernel/experimental/fcall.c session/adapterinterface.c session/baginterface.c session/exception.c session/adapter/files.c session/adapter.c session/bag.c loader.c di.c forms/element.c forms/exception.c forms/form.c forms/element/text.c forms/manager.c text.c mvc/viewinterface.c mvc/router/exception.c mvc/router/route.c mvc/router/group.c mvc/router/routeinterface.c mvc/router/annotations.c mvc/dispatcherinterface.c mvc/router.c mvc/micro.c mvc/urlinterface.c mvc/dispatcher/exception.c mvc/collection/exception.c mvc/collection/managerinterface.c mvc/collection/manager.c mvc/view.c mvc/collection.c mvc/view/engine.c mvc/view/exception.c mvc/view/engineinterface.c mvc/view/engine/php.c mvc/view/engine/volt.c mvc/view/engine/volt/compiler.c mvc/url.c mvc/controller.c mvc/application/exception.c mvc/url/exception.c mvc/dispatcher.c mvc/model.c mvc/micro/exception.c mvc/micro/collection.c mvc/model/validator/uniqueness.c mvc/model/validator/presenceof.c mvc/model/validator/exclusionin.c mvc/model/validator/regex.c mvc/model/validator/inclusionin.c mvc/model/validator/stringlength.c mvc/model/validator/numericality.c mvc/model/validator/email.c mvc/model/query.c mvc/model/resultset/complex.c mvc/model/resultset/simple.c mvc/model/query/builder.c mvc/model/query/statusinterface.c mvc/model/query/status.c mvc/model/query/builderinterface.c mvc/model/query/lang.c mvc/model/resultsetinterface.c mvc/model/exception.c mvc/model/queryinterface.c mvc/model/transactioninterface.c mvc/model/behaviorinterface.c mvc/model/metadatainterface.c mvc/model/messageinterface.c mvc/model/relationinterface.c mvc/model/managerinterface.c mvc/model/criteria.c mvc/model/validatorinterface.c mvc/model/relation.c mvc/model/criteriainterface.c mvc/model/validator.c mvc/model/row.c mvc/model/transaction/exception.c mvc/model/transaction/managerinterface.c mvc/model/transaction/failed.c mvc/model/transaction/manager.c mvc/model/behavior.c mvc/model/resultinterface.c mvc/model/metadata.c mvc/model/message.c mvc/model/manager.c mvc/model/behavior/softdelete.c mvc/model/behavior/timestampable.c mvc/model/metadata/strategy/introspection.c mvc/model/metadata/strategy/annotations.c mvc/model/metadata/memory.c mvc/model/metadata/files.c mvc/model/metadata/apc.c mvc/model/metadata/session.c mvc/model/resultset.c mvc/model/transaction.c mvc/modelinterface.c mvc/routerinterface.c mvc/collectioninterface.c mvc/user/plugin.c mvc/user/module.c mvc/user/component.c mvc/application.c mvc/controllerinterface.c mvc/moduledefinitioninterface.c config/exception.c config/adapter/ini.c exception.c db.c dispatcherinterface.c logger.c cache/frontendinterface.c cache/exception.c cache/frontend/base64.c cache/frontend/output.c cache/frontend/none.c cache/frontend/data.c cache/backendinterface.c cache/backend.c cache/backend/mongo.c cache/backend/memcache.c cache/backend/apc.c cache/backend/file.c acl/adapterinterface.c acl/exception.c acl/resourceinterface.c acl/adapter/memory.c acl/adapter.c acl/role.c acl/roleinterface.c acl/resource.c escaperinterface.c diinterface.c paginator/adapterinterface.c paginator/exception.c paginator/adapter/model.c paginator/adapter/nativearray.c tag/exception.c tag/select.c filterinterface.c flashinterface.c filter/exception.c security/exception.c flash/direct.c flash/exception.c flash/session.c escaper/exception.c dispatcher.c translate.c db/dialectinterface.c db/profiler.c db/adapterinterface.c db/referenceinterface.c db/columninterface.c db/exception.c db/reference.c db/dialect.c db/adapter/pdo/mysql.c db/adapter/pdo/postgresql.c db/adapter/pdo/sqlite.c db/adapter/pdo.c db/adapter.c db/indexinterface.c db/profiler/item.c db/rawvalue.c db/resultinterface.c db/column.c db/index.c db/result/pdo.c db/dialect/mysql.c db/dialect/postgresql.c db/dialect/sqlite.c tag.c kernel.c http/cookie.c http/cookie/exception.c http/requestinterface.c http/request/exception.c http/request/fileinterface.c http/request/file.c http/response/exception.c http/response/headers.c http/response/cookies.c http/response/headersinterface.c http/response.c http/request.c http/responseinterface.c security.c session.c annotations/reader.c annotations/adapterinterface.c annotations/readerinterface.c annotations/exception.c annotations/collection.c annotations/adapter/memory.c annotations/adapter/files.c annotations/adapter.c annotations/annotation.c annotations/reflection.c version.c flash.c config.c filter.c di/factorydefault/cli.c di/serviceinterface.c di/exception.c di/injectable.c di/service.c di/service/builder.c di/injectionawareinterface.c di/factorydefault.c events/event.c events/exception.c events/managerinterface.c events/eventsawareinterface.c events/manager.c acl.c translate/adapterinterface.c translate/exception.c translate/adapter/nativearray.c translate/adapter.c escaper.c cli/task.c cli/router/exception.c cli/router.c cli/dispatcher/exception.c cli/console.c cli/dispatcher.c cli/console/exception.c logger/adapterinterface.c logger/exception.c logger/adapter/syslog.c logger/adapter/stream.c logger/adapter/file.c logger/adapter.c logger/formatter.c logger/formatter/syslog.c logger/formatter/line.c logger/formatter/json.c logger/item.c logger/formatterinterface.c logger/multiple.c loader/exception.c mvc/model/query/parser.c mvc/model/query/scanner.c mvc/view/engine/volt/parser.c mvc/view/engine/volt/scanner.c annotations/parser.c annotations/scanner.c, $ext_shared)
PHP_NEW_EXTENSION(phalcon, phalcon.c kernel/main.c kernel/fcall.c kernel/require.c kernel/debug.c kernel/assert.c kernel/object.c kernel/array.c kernel/string.c kernel/filter.c kernel/operators.c kernel/concat.c kernel/exception.c kernel/file.c kernel/memory.c kernel/experimental/fcall.c session/adapterinterface.c session/baginterface.c session/exception.c session/adapter/files.c session/adapter.c session/bag.c loader.c di.c forms/element.c forms/exception.c forms/form.c forms/element/text.c forms/manager.c text.c mvc/viewinterface.c mvc/router/exception.c mvc/router/route.c mvc/router/group.c mvc/router/routeinterface.c mvc/router/annotations.c mvc/dispatcherinterface.c mvc/router.c mvc/micro.c mvc/urlinterface.c mvc/dispatcher/exception.c mvc/collection/exception.c mvc/collection/managerinterface.c mvc/collection/manager.c mvc/view.c mvc/collection.c mvc/view/engine.c mvc/view/exception.c mvc/view/engineinterface.c mvc/view/engine/php.c mvc/view/engine/volt.c mvc/view/engine/volt/compiler.c mvc/url.c mvc/controller.c mvc/application/exception.c mvc/url/exception.c mvc/dispatcher.c mvc/model.c mvc/micro/exception.c mvc/micro/collection.c mvc/model/validator/uniqueness.c mvc/model/validator/presenceof.c mvc/model/validator/exclusionin.c mvc/model/validator/regex.c mvc/model/validator/url.c mvc/model/validator/inclusionin.c mvc/model/validator/stringlength.c mvc/model/validator/numericality.c mvc/model/validator/email.c mvc/model/query.c mvc/model/resultset/complex.c mvc/model/resultset/simple.c mvc/model/query/builder.c mvc/model/query/statusinterface.c mvc/model/query/status.c mvc/model/query/builderinterface.c mvc/model/query/lang.c mvc/model/resultsetinterface.c mvc/model/exception.c mvc/model/queryinterface.c mvc/model/transactioninterface.c mvc/model/behaviorinterface.c mvc/model/metadatainterface.c mvc/model/messageinterface.c mvc/model/relationinterface.c mvc/model/managerinterface.c mvc/model/criteria.c mvc/model/validatorinterface.c mvc/model/relation.c mvc/model/criteriainterface.c mvc/model/validator.c mvc/model/row.c mvc/model/transaction/exception.c mvc/model/transaction/managerinterface.c mvc/model/transaction/failed.c mvc/model/transaction/manager.c mvc/model/behavior.c mvc/model/resultinterface.c mvc/model/metadata.c mvc/model/message.c mvc/model/manager.c mvc/model/behavior/softdelete.c mvc/model/behavior/timestampable.c mvc/model/metadata/strategy/introspection.c mvc/model/metadata/strategy/annotations.c mvc/model/metadata/memory.c mvc/model/metadata/files.c mvc/model/metadata/apc.c mvc/model/metadata/session.c mvc/model/resultset.c mvc/model/transaction.c mvc/modelinterface.c mvc/routerinterface.c mvc/collectioninterface.c mvc/user/plugin.c mvc/user/module.c mvc/user/component.c mvc/application.c mvc/controllerinterface.c mvc/moduledefinitioninterface.c config/exception.c config/adapter/ini.c exception.c db.c dispatcherinterface.c logger.c cache/frontendinterface.c cache/exception.c cache/frontend/base64.c cache/frontend/output.c cache/frontend/none.c cache/frontend/data.c cache/backendinterface.c cache/backend.c cache/backend/mongo.c cache/backend/memcache.c cache/backend/apc.c cache/backend/file.c acl/adapterinterface.c acl/exception.c acl/resourceinterface.c acl/adapter/memory.c acl/adapter.c acl/role.c acl/roleinterface.c acl/resource.c escaperinterface.c diinterface.c validation.c paginator/adapterinterface.c paginator/exception.c paginator/adapter/model.c paginator/adapter/nativearray.c tag/exception.c tag/select.c filterinterface.c flashinterface.c filter/exception.c security/exception.c flash/direct.c flash/exception.c flash/session.c escaper/exception.c dispatcher.c translate.c db/dialectinterface.c db/profiler.c db/adapterinterface.c db/referenceinterface.c db/columninterface.c db/exception.c db/reference.c db/dialect.c db/adapter/pdo/mysql.c db/adapter/pdo/postgresql.c db/adapter/pdo/sqlite.c db/adapter/pdo.c db/adapter.c db/indexinterface.c db/profiler/item.c db/rawvalue.c db/resultinterface.c db/column.c db/index.c db/result/pdo.c db/dialect/mysql.c db/dialect/postgresql.c db/dialect/sqlite.c tag.c validation/validator/presenceof.c validation/validator/identical.c validation/exception.c validation/validator.c validation/message.c kernel.c http/cookie.c http/cookie/exception.c http/requestinterface.c http/request/exception.c http/request/fileinterface.c http/request/file.c http/response/exception.c http/response/headers.c http/response/cookies.c http/response/headersinterface.c http/response.c http/request.c http/responseinterface.c security.c session.c annotations/reader.c annotations/adapterinterface.c annotations/readerinterface.c annotations/exception.c annotations/collection.c annotations/adapter/memory.c annotations/adapter/files.c annotations/adapter.c annotations/annotation.c annotations/reflection.c version.c flash.c config.c filter.c di/factorydefault/cli.c di/serviceinterface.c di/exception.c di/injectable.c di/service.c di/service/builder.c di/injectionawareinterface.c di/factorydefault.c events/event.c events/exception.c events/managerinterface.c events/eventsawareinterface.c events/manager.c acl.c translate/adapterinterface.c translate/exception.c translate/adapter/nativearray.c translate/adapter.c escaper.c cli/task.c cli/router/exception.c cli/router.c cli/dispatcher/exception.c cli/console.c cli/dispatcher.c cli/console/exception.c logger/adapterinterface.c logger/exception.c logger/adapter/syslog.c logger/adapter/stream.c logger/adapter/file.c logger/adapter.c logger/formatter.c logger/formatter/syslog.c logger/formatter/line.c logger/formatter/json.c logger/item.c logger/formatterinterface.c logger/multiple.c loader/exception.c mvc/model/query/parser.c mvc/model/query/scanner.c mvc/view/engine/volt/parser.c mvc/view/engine/volt/scanner.c annotations/parser.c annotations/scanner.c, $ext_shared)
fi
6 changes: 4 additions & 2 deletions ext/config.w32
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ if (PHP_PHALCON != "no") {
ADD_SOURCES("ext/phalcon/annotations", "scanner.c parser.c reader.c adapterinterface.c readerinterface.c exception.c collection.c adapter.c annotation.c reflection.c", "phalcon")
ADD_SOURCES("ext/phalcon/session", "adapterinterface.c baginterface.c exception.c adapter.c bag.c", "phalcon")
ADD_SOURCES("ext/phalcon/session/adapter", "files.c", "phalcon")
ADD_SOURCES("ext/phalcon/.", "loader.c di.c text.c exception.c db.c dispatcherinterface.c logger.c escaperinterface.c diinterface.c filterinterface.c flashinterface.c dispatcher.c translate.c tag.c kernel.c security.c session.c version.c flash.c config.c filter.c acl.c escaper.c", "phalcon")
ADD_SOURCES("ext/phalcon/.", "loader.c di.c text.c exception.c db.c dispatcherinterface.c logger.c escaperinterface.c diinterface.c validation.c filterinterface.c flashinterface.c dispatcher.c translate.c tag.c kernel.c security.c session.c version.c flash.c config.c filter.c acl.c escaper.c", "phalcon")
ADD_SOURCES("ext/phalcon/forms", "element.c exception.c form.c manager.c", "phalcon")
ADD_SOURCES("ext/phalcon/forms/element", "text.c", "phalcon")
ADD_SOURCES("ext/phalcon/mvc", "viewinterface.c dispatcherinterface.c router.c micro.c urlinterface.c view.c collection.c url.c controller.c dispatcher.c model.c modelinterface.c routerinterface.c collectioninterface.c application.c controllerinterface.c moduledefinitioninterface.c", "phalcon")
Expand All @@ -20,7 +20,7 @@ if (PHP_PHALCON != "no") {
ADD_SOURCES("ext/phalcon/mvc/application", "exception.c", "phalcon")
ADD_SOURCES("ext/phalcon/mvc/url", "exception.c", "phalcon")
ADD_SOURCES("ext/phalcon/mvc/micro", "exception.c collection.c", "phalcon")
ADD_SOURCES("ext/phalcon/mvc/model/validator", "uniqueness.c presenceof.c exclusionin.c regex.c inclusionin.c stringlength.c numericality.c email.c", "phalcon")
ADD_SOURCES("ext/phalcon/mvc/model/validator", "uniqueness.c presenceof.c exclusionin.c regex.c url.c inclusionin.c stringlength.c numericality.c email.c", "phalcon")
ADD_SOURCES("ext/phalcon/mvc/model", "query.c resultsetinterface.c exception.c queryinterface.c transactioninterface.c behaviorinterface.c metadatainterface.c messageinterface.c relationinterface.c managerinterface.c criteria.c validatorinterface.c relation.c criteriainterface.c validator.c row.c behavior.c resultinterface.c metadata.c message.c manager.c resultset.c transaction.c", "phalcon")
ADD_SOURCES("ext/phalcon/mvc/model/resultset", "complex.c simple.c", "phalcon")
ADD_SOURCES("ext/phalcon/mvc/model/transaction", "exception.c managerinterface.c failed.c manager.c", "phalcon")
Expand Down Expand Up @@ -48,6 +48,8 @@ if (PHP_PHALCON != "no") {
ADD_SOURCES("ext/phalcon/db/profiler", "item.c", "phalcon")
ADD_SOURCES("ext/phalcon/db/result", "pdo.c", "phalcon")
ADD_SOURCES("ext/phalcon/db/dialect", "mysql.c postgresql.c sqlite.c", "phalcon")
ADD_SOURCES("ext/phalcon/validation/validator", "presenceof.c identical.c", "phalcon")
ADD_SOURCES("ext/phalcon/validation", "exception.c validator.c message.c", "phalcon")
ADD_SOURCES("ext/phalcon/http", "cookie.c requestinterface.c response.c request.c responseinterface.c", "phalcon")
ADD_SOURCES("ext/phalcon/http/cookie", "exception.c", "phalcon")
ADD_SOURCES("ext/phalcon/http/request", "exception.c fileinterface.c file.c", "phalcon")
Expand Down
28 changes: 15 additions & 13 deletions ext/http/request.c
Original file line number Diff line number Diff line change
Expand Up @@ -775,8 +775,8 @@ PHP_METHOD(Phalcon_Http_Request, getHttpHost){
*/
PHP_METHOD(Phalcon_Http_Request, getClientAddress){

zval *trust_forwarded_header = NULL, *server = NULL, *_SERVER;
zval *address = NULL, *comma, *addresses, *first;
zval *trust_forwarded_header = NULL, *address = NULL, *_SERVER;
zval *comma, *addresses, *first;

PHALCON_MM_GROW();

Expand All @@ -789,24 +789,27 @@ PHP_METHOD(Phalcon_Http_Request, getClientAddress){
ZVAL_BOOL(trust_forwarded_header, 0);
}

phalcon_get_global(&_SERVER, SS("_SERVER") TSRMLS_CC);
PHALCON_CPY_WRT(server, _SERVER);
PHALCON_INIT_VAR(address);

/**
* Proxies uses this IP
*/
if (PHALCON_IS_TRUE(trust_forwarded_header)) {
if (phalcon_array_isset_string(server, SS("HTTP_X_FORWARDED_FOR"))) {
PHALCON_OBS_VAR(address);
phalcon_array_fetch_string(&address, server, SL("HTTP_X_FORWARDED_FOR"), PH_NOISY_CC);
RETURN_CCTOR(address);
phalcon_get_global(&_SERVER, SS("_SERVER") TSRMLS_CC);
if (phalcon_array_isset_string(_SERVER, SS("HTTP_X_FORWARDED_FOR"))) {
if (zend_is_true(trust_forwarded_header)) {
PHALCON_OBS_NVAR(address);
phalcon_array_fetch_string(&address, _SERVER, SL("HTTP_X_FORWARDED_FOR"), PH_NOISY_CC);
}
}

if (phalcon_array_isset_string(server, SS("REMOTE_ADDR"))) {
if (Z_TYPE_P(address) == IS_NULL) {
if (phalcon_array_isset_string(_SERVER, SS("REMOTE_ADDR"))) {
PHALCON_OBS_NVAR(address);
phalcon_array_fetch_string(&address, _SERVER, SL("REMOTE_ADDR"), PH_NOISY_CC);
}
}

PHALCON_OBS_NVAR(address);
phalcon_array_fetch_string(&address, server, SL("REMOTE_ADDR"), PH_NOISY_CC);
if (Z_TYPE_P(address) == IS_STRING) {
if (phalcon_memnstr_str(address, SL(",") TSRMLS_CC)) {
/**
* The client address has multiples parts, only return the first part
Expand All @@ -822,7 +825,6 @@ PHP_METHOD(Phalcon_Http_Request, getClientAddress){
RETURN_CCTOR(first);
}


RETURN_CCTOR(address);
}

Expand Down
Loading

0 comments on commit 1361303

Please sign in to comment.